六大排序粗解

2021-08-29 07:53:05 字數 1432 閱讀 8096

public class paixu 

system.out.println("排序後");

// a= bubble(a);

// a=select(a);

// a = insert(a);

// a=shell(a,a.length);

guibing(a,0,a.length-1);

// fast(a,0,a.length-1);

for (int i = 0; i < a.length; i++)

}//歸併排序:先採用遞迴法,將陣列分為單個的陣列,這樣就可以認為是有序的,然後,將兩兩陣列有序合併起來

private static void guibing(int a, int i, int i1 ) else p[b++]=a[low++];

}while (low<=m)

while (j<=hight)

for ( low=0;lowk)

int h=arr[length];

arr[length]=arr[i];

arr[i]=h;

while (i= 0&&k < arr[j]; j--)

arr[j + 1] = k;}}

return arr;

}// 希爾排序:插入排序的改版,設定乙個增量r=r/3+1,利用增量將陣列進行分組,

// 每一組直接進行插入排序,直到r=1時全部再進行一次直接插入排序,這樣做是因為

//直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,

// 最好時間複雜度為o[n],最壞為o[n^r](1= 0 && k < arr[j]; j = j - r)

arr[j + r] = k;}}

}while (r>1);

return arr;

}//選擇排序:從0個開始,迴圈到最後乙個,每一輪裡面,

// 設定它為最小值,用其他數來跟它比較,若是有比它小的,記下下標,

//用小的繼續比較,最後才進行交換,最壞時間複雜度為o[n^2],最好時間複雜度為o[n^2];平均複雜度為o[n^2]

private static int select(int arr)

}if (min != i)

}return arr;

}//氣泡排序:從0個開始,迴圈到最後乙個,每一輪裡面,

// 陣列從後往前,不斷比較,小的數往前交換,這樣一輪過後,最小的數就在最前面,

// 如果,發現有一趟沒有進行過交換,那麼就說明已經全部排好序,提前結束迴圈,排序結束;

//最壞時間複雜度o[n^2],最好時間複雜度o[n],平均複雜度為o[n^2]

private static int bubble(int arr) }}

return arr;

}}

Golang實現常用六大排序演算法

使用golang實現了以下排序演算法 package main import fmt math rand sort time const num 10000 測試陣列的長度 rangenum 100000 陣列元素大小範圍 func main 生成隨機數組 func generaterand int...

常見六大排序演算法詳解以及比較

氣泡排序 英語 bubble sort 是一種簡單的排序演算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算...

六大排序(選擇,插入,冒泡,希爾,快排,堆排序)

1.實現簡單選擇排序 直接插入排序和氣泡排序。2.實現希爾排序演算法。3.實現快速排序演算法。4.實現堆排序演算法。想想這麼多排序方法,乍一看挺複雜,寫起來還挺簡單的 include include include include include include include includeusi...