排序演算法 2

2021-10-04 06:17:03 字數 1568 閱讀 2112

快速排序(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

這是 漫談經典排序演算法系列 第二篇,解析了各種插入排序演算法 主要包括 直接插入排序 折半插入排序 表插入排序 希爾插入排序。每一種演算法的開頭都敘述了引出該演算法的原因,然後給出 最後分析演算法效率及和其他插入排序相比,優劣在 各種排序演算法的解析請參考如下 漫談經典排序演算法 一 從簡單選擇排...