選擇排序/氣泡排序/快速排序
例子序列:176453 從小到大排序
1.選擇排序
自己的話概括:每個位置上的數字都是由在這個位置之後的所有數字中選擇的乙個最小的數字。
1 7 6 4 5 3
1 7 6 4 5 3
1 3 6 4 5 7
1 3 4 6 5 7
1 3 4 5 6 7
完成排序!
**實現:
#include
intmain()
for(i=
0;i)printf
("%4d"
,a[i]);
//排序後依次輸出
return0;
}
當然也可以不用index,
#include
intmain()
for(i=
0;i)printf
("%4d"
,a[i]);
return0;
}
以上**實現的是所選位置上的數字需要與之後每個位置上的數字都進行比較,只要比它小就進行交換,當迴圈結束後留下的就是最小的數字。
2.氣泡排序
自己的話概括:通過相鄰元素的不斷比較,使最大的元素右移到最後。
1 7 6 4 5 3
1 7 6 4 5 3
1 6 7 4 5 3
1 6 4 7 5 3
1 6 4 5 7 3
1 6 4 5 3 7 (7被移到最後
1 6 4 5 3 7
1 4 6 5 3 7
1 4 5 6 3 7
1 4 5 3 6
…**實現:
#include
intmain()
if(flag==0)
break
;//表示當前已順序,無需排序
}printf
("%d,%d\n"
,i,flag)
;for
(i=0
;i)printf
("%4d"
,a[i]);
return0;
}
3.快速排序
自己的話概括:拿出乙個數,使左邊的數都比它小,右邊的數都比它大。
**實現:
#include
int b[
100]
;void
qsort
(int l,
int r)
b[i]
=key;
qsort
(l,i-1)
;//遞迴,左邊組繼續排序
qsort
(i+1
,r);
}int
main()
例子**執行結果:
氣泡排序,選擇排序,快速排序
1.氣泡排序 氣泡排序 bubble sort 最為簡單的一種排序,通過重複走完陣列的所有元素,通過打擂台的方式兩個兩個比較,直到沒有數可以交換的時候結束這個數,再到下個數,直到整個陣列排好順序。因乙個個浮出所以叫氣泡排序。雙重迴圈時間o n 2 void bubblesort int arr in...
氣泡排序 選擇排序 快速排序
氣泡排序的思想在於,不斷地將當前元素與後乙個元素進行比較,如果當前元素較小,則調換當前元素與後乙個元素的位置,否則保持不變 假設需要排序的元素一共有n個,從第乙個元素開始,對後續的 n 2 元素進行上述比較,最終的排序結果中,最後的元素是最大值。def bubble sort alist n len...
氣泡排序 快速排序 選擇排序
原理 臨近的兩個數字比較,按照從小到大或者從大到小進行排序,一共進行n趟排序 n是陣列的長度 時間複雜度 o n 2 test public void bubblesort int length a.length for int j 0 ja i 1 for int i 0 i 時間複雜度 o n ...