排序演算法 之選擇排序(直接選擇排序,堆排序)

2021-08-04 20:55:54 字數 585 閱讀 7726

一、排序演算法分為:

1.插入排序(直接插入排序&希爾排序)

2.選擇排序(直接選擇排序&堆排序)

3.交換排序(氣泡排序&快速排序)

4.歸併排序

二,選擇排序----直接選擇排序

1.演算法**

//選擇排序

//直接選擇排序

void selectsort(int* a,size_t n)

if(a[child]>a[parent])

else

}}void heapsort(int* a,size_t n)

size_t end=n-1;

while(end>0) }

測試**

void printarray(int* a,size_t n)

{ for(size_t i=0;i

最好情況:o(nlogn)

最壞情況:o(nlogn)

平均時間 複雜度:o(nlogn)

空間複雜度:(o(1))

3.穩定性

堆排序是不穩定的,因為利用的排序空間仍然是初始的序列,並未開闢新的空間,演算法是不穩定的,與初始序列無關。

排序演算法之直接選擇排序

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...

排序演算法之直接選擇排序

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...

每日演算法 選擇排序演算法之直接選擇排序

1 演算法簡介 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下 2 演算法描述和分析 n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 1 初始狀態 無序區為r 1.n 有序區為空。2 第i趟排序 i 1,2,3.n 1 第i趟排序開始時,當前...