常見排序演算法小結一(C 實現)(未完)

2021-08-04 22:23:21 字數 1775 閱讀 7998

插入排序 與 希爾排序

選擇排序 與 堆排序

氣泡排序

快速排序(氣泡排序的改進)

歸併排序

堆排序基數排序

桶排序計數排序

各種排序演算法的視覺化過程見 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.簡單氣泡排...