評價演算法的指標是:時間、空間和穩定性。
演算法特點:
演算法名稱 時間複雜度 空間複雜度 穩定性
直接插入 o(n2) o(1) √
希爾排序 n→∞ o(n(log2n2)) o(1) ×
氣泡排序 o(n2) o(1) √
快速排序 o(nlog2n)
好:o(log2n)
壞:o(n)
× 選擇排序 o(n2) o(1)
演算法本身是穩定的
採用「交換記錄」策略會造成不穩定現象的產生
堆排序 o(nlog2n) o(1) ×
歸併排序 o(nlog2n) o(n) √
基數排序 o(d(n+rd)) o(n+rd) √
直接插入排序,是當待排序的記錄個數比較少並且排序序列的關鍵字基本有序時,效率較高。
通過構建有序序列,對於未排序的資料,在已排序序列中從後向前掃瞄,找到相應的位置並插入。(在具體實現的時候,可以將list[i]從前向後插入比較,也可以從後向前插入比較。這裡採用的是從後向前插入比較)
1
public
class main
14 j = j-1;
15 }
16 }
17return
list;
18 }
1920
public
static
void main(string args) ;
22int result = new
int[list.length];
23 result = insert_sort(list);
24 system.out.println("插入排序:");
25for (int i = 0; i < result.length; i++)
28 }
29 }
希爾排序又稱「縮小增量排序」,也是插入排序的一種。希爾排序實質上是採用分組插入的方法。先將待排序記錄序列分割成幾組,對每組進行直接插入,然後增加每組的資料量重新分組。就這樣經過幾次分組排序之後,整個序列基本有序,最後再進行一次直接插入排序。
1
/*希爾排序*/
2public
static
int shell_sort(int list)
17 k = k - group;
18 }
19 j = j + group;
20 }
21 }
22group = group / 2;
23 }
24return list;
25 }
簡單選擇排序
1
/*簡單選擇排序*/
2public
static
int select_sort(int list)
10 }
1112
return
list;
13 }
1
/*氣泡排序*/
2public
static
int bubble_sort(int list)
11 }
12 }
13return
list;
14 }
```
1 /*快速排序*/
2public static int quick_sort(int list,int
left,int
right)
7 temp = list[left];
8 low = left;
9 high = right;
1011
while (left
< right)
15 list[left] = list[right];
16while (left
< right && list[left] <= temp)
19 list[right] = temp;
20 quick_sort(list, low, left - 1);
21 quick_sort(list, left + 1, high);
22 }
23 return list;
24 }
1 /*歸併排序*/
2public static int merge(int left,int right) else
1415 }
1617 return result;
1819 }
java排序演算法
1.定義 通過比較來確定輸入序列1,a 2,a n 的元素間相對次序的排序演算法稱為比較排序演算法。2.演算法解釋 1 選擇排序 選擇排序的基本思想是對待排序的記錄序列進行n 1遍的處理,第i遍處理是將l i.n 中最小者與l i 交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。2...
Java排序演算法
回顧一下排序演算法 稍微地設計一下基礎類 插入排序 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在...
java 排序演算法
氣泡排序 public void bubblesort int array 選擇排序 選擇排序 public void selectsort int a else 判斷 j 1 或者 就是第乙個小於等於temp資料的位置 datas j 1 temp 快速排序 快速排序 param datas pu...