2、實現**
相關鏈結
穩定兩個字說的就是排序過程中和排序結果裡數值相等的資料的先序關係沒有發生變化。
如:排序前96
36*排序結果36
6*9(排序後原先在後邊的6依然在後邊,這就是穩定的。)
1、對於有n個數的待排序序列,共需進行n-1趟排序,;2、每次排序,都將第k大的數交換至n+1-k位上(即每次只選出未排序中的最大的乙個放到該組最後邊);3、重複,直至未排序組只剩乙個。
時間複雜度:
最好情況:待排序序列已經是公升序的了,比較次數n-1,移動次數0。o(n)
最壞情況:待排序序列是逆序的,比較次數n*(n-1)/2,移動次數3n*(n-1)/2。o(n^2)
每次比較的個數較上一次減一,因為上一組最大的那個已經選出來放在最後邊了,排好序了。故是乙個以n為首相,-1為公差的等差數列。由於是採用乙個臨時變數實現數值交換的,故每次交換有3次操作,於是移動次數為比較次數乘3.
空間複雜度:
不需要額外輔助儲存空間。
#include
#define arr_len 255
/*陣列容量*/
#define elemtype int
/*資料型別*/
/* elemtype arr: 排序目標陣列; int len: 元素個數 */
void bubblesort (elemtype arr,
int len)}}
}int main (
void);
//待排序序列
int len =10;
//排序長度
int i;
bubblesort (arr, len)
;for
(i=0
; i) printf (
"%d\t"
, arr[i]);
printf
("\n");
return0;
}
氣泡排序/4602306?fr=aladdin 穩定排序和非穩定排序
首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...
排序 穩定排序和不穩定排序
這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...
穩定排序和不穩定排序
這幾天筆試了好幾 次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前 已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者...