總結 經典排序演算法 C )

2021-08-29 22:33:02 字數 1646 閱讀 5342

最近在學習演算法,趁這個機會總結一些演算法。慢慢更新,歡迎交流**。

排序:輸入:n個數

輸出:有序(從大到小、從小到大)序列

一、插入排序

做排序的都需要做遍歷,而插入排序,顧名思義,就是插隊。

不必多說,給個案例體會一下:

輸入:5 4 3 2 1

處理:輸出:1 2 3 4 5

輸入:6 8 2 4 5

處理:**如下(測試):

(排序部分第11-16行);

input:輸入陣列元素數n;輸入陣列元素a[i];輸入n=0**結束;

#include#includeusing namespace std;

int main()

for(int k=0;k二、選擇排序:

規則:首先找到陣列的最小數,與a[0]交換;迴圈下去,找到第n小的數,與陣列的第n個數交換;

案例:輸入: 5 4 9 8 3

處理:輸出:3 4 5 8 9

**如下:

#includeusing namespace std;

int main()

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

l[len1]=r[len2]=int_max; //定義無窮大

int i = 0, j = 0;

for (int k = p; k <= r; k++)

else

}}void mergesort(int _array, int p, int r)

}int main()

}int temp=a[i];

a[i]=a[p];

a[p]=temp;

return i;

}void quicksort(int *a,int p,int q)

}int main()

}int temp=a[i];

a[i]=a[p];

a[p]=temp;

return i;

}int random_partition(int* a,int p,int q) //產生隨機數做下標,使得中間數是隨機的數

void quicksort(int *a,int p,int q)

}int main()

*/ counting_sort(a,b,n,c,m);

cout<<"and the result is:"<七、基數排序法

#include #include #include using namespace std;

int getmax(int a,int n)

void countingsort(int a,int n,int exp)

; int c[10]=;

for(int i=0;i=0;j--)

for(int i=0;i0;exp*=10)

countingsort(a,n,exp);

}int main()

cout

for(int i=0;icout

return 0;

}

經典排序演算法總結(C語言)

十種常見排序演算法一般分為以下幾種 1 非線性時間比較類排序 交換類排序 快速排序和氣泡排序 插入類排序 簡單插入排序和希爾排序 選擇類排序 簡單選擇排序和堆排序 歸併排序 二路歸併排序和多路歸併排序 2 線性時間非比較類排序 計數排序 基數排序和桶排序。總結 1 在比較類排序中,歸併排序號稱最快,...

經典排序演算法總結

排序演算法是離散數學和資料結構學科最基本的演算法,雖然知道這些排序演算法的名字,但是一直沒有研究過它們的實現原理。現在把它們收集起來,並一一親自實現,來加深對排序演算法的理解。1,氣泡排序 最簡單的排序演算法,從第乙個元素開始比較相鄰元素大小,如果前邊元素大於後邊元素則交換位置,否則將下標移到下乙個...

經典排序演算法總結

插入排序 選擇排序 歸併排序 排序方法 平均情況 最好最差 空間複雜度 穩定性氣泡排序o n2 o n 2 o n o n o n2 o n 2 o 1 o 1 穩定快速排序o nlogn o nlog n o nlogn o nlog n o n2 o n 2 o nlogn o nlog n 不...