插入排序 與 希爾排序
選擇排序 與 堆排序
氣泡排序
快速排序(氣泡排序的改進)
歸併排序
堆排序基數排序
桶排序計數排序
各種排序演算法的視覺化過程見 visualgo
為了對比各個排序演算法的效能,實現sort.cpp。
static bool issorted(int a,int len) //測試陣列元素是否有序
static void time(int a,int len,sorttype alg) //給定輸入,對已有排序演算法計時
static void sort(int data,int len, sorttype alg) //對使用alg排序方法,對輸入進行排序
int * proudct( int length) //產生乙個長度為n的陣列
main.cpp
#include"sort.cpp"
//產生乙個長度為n的陣列
int * proudct( int
length)
return tmp;
}int main()
多個排序演算法 sort.cpp **如下
#include
#include
using
namespace
std;
enum sorttype
;class sort
};//給定輸入,對已有排序演算法計時
static
void time(int a,int len,sorttype alg)
}cout
<< "right:正確排序"
<< endl;
return
true;
}void
static show(int a, int len)
cout
<< endl;
}private:
//1、插入排序
static
void insertion(int data, int len){}
//2、選擇排序
static
void selection(int data, int len){}
//3、氣泡排序
static
void bubblesort(int data, int len){}
//4、希爾排序
static
void shellsort(int data, int len){}
//5、快速排序
static
void quicksort(int data, int len){}
//6、歸併排序
static
void mergesort(int data, int len){}
//7、堆排序
static
void heapsort(int data, int len){}
//1、計數排序
static
void countsort(int data, int len){}
//2、桶排序
static
void radixsort(int data, int len){}
//3、基數排序
static
void radixsort(int data, int len){}
}
常見排序演算法小結
常見排序演算法時間和複雜度如下圖 氣泡排序核心 對於陣列a n for int i 0 i 改進 即使當發現陣列已經有序是跳出迴圈,使用方法就是在設定乙個flag,發現第二層的for迴圈一次都沒有進行交換就是表明陣列已經是有序的。時間複雜度o n 2 插入排序有3種,直接插入排序,二分插入排序,希爾...
排序演算法小結 C 實現
include include 排序演算法的穩定性 對於相同的關鍵字,排序之前的位置和排序之後的位置相同,則稱為穩定排序,否則不穩定排序。歸併排序 基本思想為 先分解再合併,在合併的過程中進行排序 穩定排序 平均時間複雜度為 o nlogn 最好時間複雜度o nlogn 最好時間複雜度o nlogn...
排序演算法小結(C 實現)
前言 在這裡總結一下各種排序方式以增強理解和之後複習方便,附帶一些優化方式 目錄 非線性時間 1.比較 1氣泡排序 2快速排序 2.插入 1插入排序 2希爾排序 3.選擇 1選擇排序 2堆排序 4.歸併 1二路歸併 2多路歸併 線性o n 1.計數排序 2.堆排序 3.基數排序 正文 1.簡單氣泡排...