資料結構與演算法 七種常見排序演算法

2021-09-24 04:16:33 字數 1598 閱讀 3183

總結《大話資料結構》,本文相關**均由c++編寫。

void bubblesort(int a, int num)

}}

void selectedsort(int a, int num)

a[j+1] = temp;

}}

void shellsort(int a, int n)

a[j + jump] = temp;

}} } while (jump > 1);

}

void adjust_heap(int* a, int node, int size)

}void heap_sort(int* a, int len)

}

void merge(int* a, int start, int mid, int end)

while (i <= mid)

tmp[k++] = a[i++];

while (j <= end)

tmp[k++] = a[j++];

// 將排序後的元素,全部都整合到陣列a中。

for (i = 0; i < k; i++)

a[start + i] = tmp[i];

delete tmp;

}void mergesortup2down(int* a, int start, int end)

int partition(int a, int i, int j)

swap(a[i], a[j]);

while (i < j&& a[i] <= temp)

swap(a[i], a[j]);

} return i;//這裡不管是返回i還是j都是一樣的,因為最後會相等

}void quicksort(int a, int low, int high)

n2)o(n)

o(n 2n^

n2)o(1)

穩定簡單選擇排序

o(n 2n^

n2)o(n2n^

n2)o(n2n^

n2)o(1)

穩定直接插入排序

o(n 2n^

n2)o(n)

o(n 2n^

n2)o(1)

穩定希爾排序

o(nlogn)~o(n2n^

n2)o((n

1.5n^

n1.5

)o(n2n^

n2)o(1)

不穩定堆排序

o(nlogn)

o(nlogn)

o(nlogn)

o(1)

不穩定歸併排序

o(nlogn)

o(nlogn)

o(nlogn)

o(n)

穩定快速排序

o(nlogn)

o(nlogn)

o(n 2n^

n2)o(nlogn)~o(n2n^

n2)不穩定

七種排序演算法

排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性插入排序 o n 2 o n o n 2 o 1 穩定希爾排序 o n log n o n 2 o n 1.3 o n 2 o 1 不穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定氣泡排序 o n 2 o n o n 2 o ...

七種排序演算法總結

根據排序過程中借助的主要操作,將7種內排序演算法按照下圖所示進行分類。將7種演算法的各種指標進行對比,如下表所示。從平均情況來看,顯然最後3種改進演算法要勝過希爾排序,並遠遠勝過前3種簡單演算法。從最好情況看,反而冒泡和直接插入排序要更勝一籌,也就是說,如果待排序列總是基本有序,反而不應該考慮四種複...

七種排序演算法整理

1.氣泡排序 交換排序 依次比較相鄰元素,將較大的值交換到右邊,那麼第一趟走完,陣列中的最大值已經在最後一位了,接下來就把第二大的數歸位,第三大的數歸位 public static void dubblesort int arr 2.選擇排序 交換排序 設定最小元素的索引minindex,假設當前索...