排序演算法有很多,下面只是列舉了幾種常見的.
首先定義乙個用於交換陣列中2個值的方法
1//用於交換的方法
2public
static
void swap(integer arr,int a,int
b)
氣泡排序 o(n^2)
1public
static
void
sort(integer a)12}
1314
if(flag)18}
19 }
簡單選擇排序 o(n^2)
1public
static
void
sort(integer arr)9}
10if (min !=i)13}
1415 }
直接插入排序 o(n^2)
1public
static
void
sort(integer arr)
9 arr[j+1] =temp;10}
11}12 }
希爾排序 o(nlog(n))~ o(n^2) 不穩定
1public
static
void
sort(integer arr)
14 arr[j+increment] =temp;15}
16}17 }
快速排序 o(nlog(n))~ o(n^2) 不穩定
1public
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方法...