八大排序演算法 C 實現及對比

2021-06-25 12:58:50 字數 1696 閱讀 2886

(1)直接插入排序

void insertsort(int *data, int len) 

}}

(2)氣泡排序

void bubblesort(int *data, int len) 

}}

(3)選擇排序

void selectsort(int *data, int len) 

swap(data[i], data[max]);

}}

(4)希爾排序:將序列分成子串行,然後對子序列分別進行插入排序

void shellsort(int *data, int len) 

} gap /= 2;

}}

(5)快速排序

int partition(int *data, int low, int high) 

return low;

}void quicksort(int *data, int low, int high)

}

(6)堆排序

//堆排序 : 將要排序的n個數看作順序儲存的二叉樹,

//首先將其建成大頂堆

//然後將堆頂元素和最後乙個元素交換,將前n-1個元素調整為大頂堆

//再將堆頂元素和倒數第二個元素交換,將前n-2個元素調整為大頂堆

//如此迴圈。

void adjustheap(int *data, int len, int k) }}

void buildheap(int *data, int len)

}void heapsort(int *data, int len)

}

(7)歸併排序

void merge(int *data, int begin, int mid, int end) 

else

} while(i <= mid)

while(j <= end)

for(i = begin, k = 0; k < n; ++i, ++k)

delete sortdata;

}void mergesort(int *data, int begin, int end)

}

(8)基數排序

#define radix_num 10

#define key_num 3

int getnuminpos(int num, int pos)

return num%10;

}void radixsort(int *data, int n)

for(int i = 1; i <= key_num;++i)

//分配

for(int j = 0; j < n; ++j)

//收集

for(int j = 0, k = 0; j < radix_num; ++j)

} }for(int i = 0; i < radix_num; ++i)

}

各種排序演算法的時間複雜度和空間複雜度對比:

八大排序演算法的C 實現

include stdafx.h include include include include using namespace std void print vectornumv 輸出陣列 numv.at j 1 v return numv vectorselectionsort vectornu...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...