幾種排序演算法的實現和比較

2021-07-27 15:22:21 字數 1651 閱讀 1538

穩定性: 穩定

最壞時間複雜度o(n^2)

最好時間複雜度o(n)

平均時間複雜度o(n^2)

void bubble_sort(int *a, int n)

}if(!flag)

break;

}}

穩定性: 穩定

平均時間複雜度o(n^2)

最壞時間複雜度o(n^2)

最好時間複雜度o(n)

void insert_sort(int *a, int n)

a[j + 1] = key;

}}

穩定性: 不穩定

平均時間複雜度o(n^2)

最壞時間複雜度o(n^2)

最好時間複雜度o(n^2)

void select_sort(int *a, int n)

}if(index != i)

_swap(a[index], a[i]);

}}

穩定性: 不穩定

最差時間複雜度o(n^2)

最好時間複雜度o(nlogn)

平均時間複雜度o(nlogn)

void quick_sort(int *a, int l, int r)

a[i] = x;

quick_sort(a, l, i - 1);

quick_sort(a, i + 1, r);

}}

穩定性: 不穩定

平均時間複雜度o(nlogn)

void shell_sort(int *a, int n)

a[k + grap] = temp;}}

}}

穩定性: 穩定

平均時間複雜度o(nlogn)

最壞時間複雜度o(nlogn)

最好時間複雜度o(nlogn)

空間複雜度o(n)

void _merge(int *a, int

left, int

mid, int

right)

while(i <= mid)

while(j <= right)

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

a[k + left] = temp[k];

delete temp;

}void merge_sort(int *a, int

left, int

right)

}

穩定性: 不穩定

平均時間複雜度o(nlogn)

最壞時間複雜度o(nlogn)

最好時間複雜度o(nlogn)

void adjust_heap(int *a, int holeindex, int

len)

else

break;

}a[holeindex] = temp;

}void build_heap(int *a, int

len)

void heap_sort(int *a, int

len)

}

幾種排序演算法的實現與比較

排序演算法比較 利用隨機函式產生n個隨機整數,利用直接插入排序 折半插入排序,起泡排序 快速排序 選擇排序 堆排序,基數排序七種排序方法進行排序 結果為由小到大的順序 並比較次數和交換次數。這裡是源 include using namespace std include include includ...

幾種排序演算法比較

資料結構 10 排序十 四 排序 sort thinking in algorithm 12.詳解十一種排序演算法 排序法平均時間 最差情形 穩定度額外空間 備註冒泡 o n2 o n2 穩定o 1 n小時較好 交換o n2 o n2 不穩定o 1 n小時較好 選擇o n2 o n2 不穩定o 1 ...

幾種排序演算法的比較

1.分類 非線性時間比較類排序 通過比較來決定元素間的相對位置關係,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間比較類排序 不通過比較來決定元素間的相對位置關係,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間比較類排序。2.複雜度 3.演算法相關...