快速排序(quicksort)
**演示
現在左側是比70小的數,右側是比70大的數。繼續以左側陣列為例解釋,
//基準位歸位
while (i <= j+1)
}arr[begin] = arr[j];
arr[j] = tmp;
quick_sort(arr, begin, j - 1);
quick_sort(arr, j + 1, end);
}
public static void main(string args)
}public static void quick_sort(int arr, int begin, int end)
}arr[begin] = arr[j];
arr[j] = tmp;
return j;
}
插入排序(insertsort)
**實現
private static void insertsort(int arr)
// 存在比其小的數,插入
if (j != i) }}
希爾排序(shellsort)private static void shellsort(int arr){
for (int gap = arr.length/2; gap >0 ; gap /=2) {
for (int i = gap; i < arr.length; i++) {
int tmp = arr[i];
int j=i;
while(j-gap>=0&&tmp排序演算法比較
排序演算法
平均時間複雜度
平均空間複雜度
是否穩定
快速排序
o(nlogn)
o(nlogn)
f插入排序
o(n2)
o(1)
t希爾排序
o(n1.3)
o(1)
f
排序 排序演算法2
思想 堆,堆頂元素 即第乙個元素 必為最小項 小頂堆 公升序序列 或者最大項 大頂堆 降序序列 若以一維陣列儲存乙個堆,則堆對應一棵完全二叉樹,且所有非葉結點的值均不大於 或不小於 其子女的值,根結點 堆頂元素 的值是最小 或最大 的。雖然說是一棵完全二叉樹,但不是說就得根據這些資料還需要重新建立資...
排序演算法 2
歸併排序 merge sort 依舊先上源 include include void merge int sourcearr,int temparr,int startindex,int midindex,int endindex while i midindex 1 temparr k sourc...
排序演算法2
這是 漫談經典排序演算法系列 第二篇,解析了各種插入排序演算法 主要包括 直接插入排序 折半插入排序 表插入排序 希爾插入排序。每一種演算法的開頭都敘述了引出該演算法的原因,然後給出 最後分析演算法效率及和其他插入排序相比,優劣在 各種排序演算法的解析請參考如下 漫談經典排序演算法 一 從簡單選擇排...