Js 排序演算法 交換排序

2021-08-21 10:31:05 字數 932 閱讀 9388

兩兩比較待排序記錄的關鍵字,一旦發現兩個記錄的次序與排序要求相反,則交換這兩個記錄的位置,知道表中沒有相反的記錄存在。

從陣列中第乙個數開始,依次遍歷陣列中的每乙個數,通過相鄰比較交換,每一輪迴圈下來找出剩餘未排序數的中的最大數並」冒泡」至數列的頂端。

從陣列中第乙個數開始,依次與下乙個數比較併次交換比自己小的數,直到最後乙個數。如果發生交換,則繼續下面的步驟,如果未發生交換,則陣列有序,排序結束,此時時間複雜度為o(n);每一輪」冒泡」結束後,最大的數將出現在亂序數列的最後一位。

穩定性:穩定排序。

時間複雜度: o(n2)

最好的情況:如果待排序資料序列為正序,則一趟冒泡就可完成排序,排序碼的比較次數為n-1次,且沒有移動,時間複雜度為o(n)。

最壞的情況:如果待排序資料序列為逆序,則氣泡排序需要n-1次趟起泡,每趟進行n-i次排序碼的比較和移動.

//氣泡排序

function bubblesort(record)

}if(swap==0)

} console.log(record);

return record;

}

在待排序的記錄中,取其中乙個記錄(一般為第乙個)作為基準,經過一趟排序後,所有關鍵字比它小的都排到它的左邊,比它大的都排到它的右邊(只交換,不排序),此時,該基準在有序序列中的最終位置就確定了,然後,再劃分到基準記錄左右兩部分的記錄重複上述過程,知道每一部分最終劃分為乙個記錄時為止。核心是劃分。

最壞情況:梅西劃分只得到乙個子串行,時間複雜度為o(n2)

平均複雜度為o(n2)

不穩定排序方法

//快速排序---遞迴;

function d_quicksort(record,left,right)

while(i!=j){

while(i=temp)j--;

if(i

排序演算法 交換排序

交換排序的基本思想 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時則進行交換,直到沒有反序的元素為止。1.氣泡排序 交換排序 演算法 氣泡排序 bubble sort 輸入 待排序元素的陣列,待排序元素個數 輸出 原理 通過無序區中相鄰元素間關鍵字的比較和位置的交換,使關鍵字最小的元素如氣泡一...

排序演算法 交換排序

基本思想 在乙個待排序序列中,兩兩比較元素的排序碼,如果不滿足次序要求則進行交換,直到整個排序序列滿足要求。思想 對待排序序列從前向後,依次比較相鄰元素的排序碼,若發生逆序,則進行交換。實現 include void bubblesort int p,int n if flag 減少不必要的比較 r...

交換排序演算法

快速排序 為啥叫快速排序,因為速度快,效率高 1.先找乙個數作為基準。作為基準的這個數,一趟排下來,左邊的數必小於它,右邊的數必大於它,也就是說,它找到了自己的位置。2.將兩個指標i,j分別指向表的起始 基準 和最後的位置。3.比較j指標的數字是否小於基準,j 直到j小於基準,交換位置 4.比較i指...