幾種常見的排序演算法集錦

2022-08-05 05:42:14 字數 2014 閱讀 3153

排序演算法有很多,下面只是列舉了幾種常見的.

首先定義乙個用於交換陣列中2個值的方法

1

//用於交換的方法

2public

static

void swap(integer arr,int a,int

b)

氣泡排序   o(n^2)

1

public

static

void

sort(integer a)12}

1314

if(flag)18}

19 }

簡單選擇排序  o(n^2)

1

public

static

void

sort(integer arr)9}

10if (min !=i)13}

1415 }

直接插入排序  o(n^2)

1

public

static

void

sort(integer arr)

9 arr[j+1] =temp;10}

11}12 }

希爾排序   o(nlog(n))~ o(n^2)   不穩定

1

public

static

void

sort(integer arr)

14 arr[j+increment] =temp;15}

16}17 }

快速排序    o(nlog(n))~ o(n^2)   不穩定

1

public

static

void sort(integer arr,int left,int

right)

6 i=left;

7 j=right;8//

temp就是基準位

9 temp =arr[left];

10while (i15//

再看左邊,依次往右遞增

16while (temp>=arr[i]&&i19//

如果滿足條件則交換

20if (i26//

最後將基準為與i和j相等位置的數字交換

27 arr[left] =arr[i];

28 arr[i] =temp;

29//

遞迴呼叫左半數組

30 sort(arr, left, j-1);

31//

遞迴呼叫右半陣列

32 sort(arr, j+1, right);

33 }

用下面這段**做測試,每個演算法的大概時間(因個人電腦差異,資料可能有差異)

1         integer arr = new integer[10000];

2for (int i =0;i)

5 long start =system.currenttimemillis();

6 sort(arr,0,arr.length-1);

7 long end =system.currenttimemillis();

8system.out.println(start);

9system.out.println(end);

10 system.out.println("執行時間為----"+(end-start));

11for

(integer i:arr)

冒泡演算法:430~550ms

簡單選擇排序:105~180ms

直接插入排序:55~80ms

希爾排序:40~60ms

快速排序:5~10ms

幾種常見排序演算法

幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...

幾種常見排序演算法

1氣泡排序 bubble sort 氣泡排序思路 1.將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 2.對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i 0 i n...

幾種常見排序演算法

以下內容包括 氣泡排序,選擇排序,桶排序 一 氣泡排序 bubblesort public class bubblesort int temp 0 for int i 0 i1 i system.out.println arrays.tostring arr 用arrays類中的tostring方法...