直接插入排序
void insertsort(elemtype a, int n)
}
氣泡排序
void bubblesort(int a, int n)
i = pos ; //為下一趟排序作準備
}}
快速排序
int partition(elemtype a, int low, int high)
a[low] = pivot; //樞軸值元素存放到最終到最終位置
return low; //返回存放樞軸的最終位置
}void quicksort(elemtype a, int low, int high)
}
簡單選擇排序(直接選擇排序)
(1)void selectsort(elemtype a, int n)
void selectsort(int a,int n){
int key,tmp;
for(int i=0;i記憶口訣:
(1)穩定性:心情不穩定,快些選一堆好友來聊天吧
快指快速排序,些(希)指希爾排序,選指選擇排序,堆指堆排序,這4個排序是不穩定的。
(2)時間複雜度:快些以nlog(2,n)的速度歸隊
快指快速排序,些(希)指希爾排序,歸指歸併排序,隊(堆)指堆排序,這4個排序的時間複雜度為nlog(2,n),其他均 為o(n^2)(基數除外,為o(d(n+r)))。
(3)空間複雜度:快歸基除外為o(1)
快是log(2,n),歸是n,基是r。
經過一趟排序,能保證乙個元素到達最終位置,有交換類(氣泡排序,快速排序)和選擇類(簡單排序、堆排序)排序,即插入類排序不可得到最終位置。
排序方法的元素比較次數與原始序列無關的有簡單選擇排序。
排序方法的排序趟數與原始序列有關的有交換類(氣泡排序,快速排序)排序。
各種排序演算法比較
花了很長時間終於把排序的基礎學了一下,這段時間學了很多東西,總結一下 學的排序演算法有 插入排序,合併排序,氣泡排序,選擇排序,希爾排序,堆排序,快速排序,計數排序,基數排序,桶排序 沒有實現 比較一下學習後的心得。我不是很清楚他們的時間複雜度,也真的不知道他們到底誰快誰慢,因為書上的推導我確實只是...
各種排序演算法比較
排序相關的演算法複雜度分析 下邊分別實現下各個演算法 簡單選擇排序 1 簡單選擇排序 2void select sort int a,intn 3 16 17swap a i a index 18 19 這裡簡單選擇排序之所以不穩定是因為交換的時候會打亂順序,例如 5,4,5,1,6。第一次交換後會...
各種排序演算法的比較
穩定的排序演算法有 直接插入,冒泡,歸併,基數排序。一.快速排序 快排的三個步驟 1.選取樞紐元,一般用三數中值法,即求得left,center,right的中位數 不要用第乙個數,如果原始資料是倒序,效率將會很低 2.根據樞紐元把輸入資料劃分成為兩部分,左半部分的數比樞紐元小,右半部分比樞紐元大。...