排序演算法歸類

2021-08-08 23:22:44 字數 2938 閱讀 8281

1.直接插入排序

具體做法是:在插入第i個記錄時,r1,r2,。。。ri-1已經排好序了,這時將ri的關鍵字ki-1,ki-2。。。。進行比較,從而找到應該插入的位置並將ri插入,插入位置和他後面的記錄向後移。

#include 

#include

using

namespace

std;

int a[123456];

int main()

int key;

for(int i=1;iint j=i-1;

while(j>=0 && a[j]>key)

a[j+1]=key;

}for(int i=0;iprintf("%d ",a[i]);

}printf("\n");

return

0;}

2.氣泡排序

具體做法是:首先將第乙個記錄關鍵字與第二個記錄的關鍵字進行比較,若為逆序,則交換兩個記錄的值,然後比較第二個和第三個的關鍵字,依次類推,直到第n-1個關鍵字與第n個關鍵字比完,上述過程為第一趟排序,最大值被放到了n這個位置,再對前n-1個元素進行第二趟排序,以此類推。

#include 

#include

using

namespace

std;

int a[123456];

int main()

for(int i=0;ifor(int j=0;j1;j++)}}

for(int i=0;iprintf("%d ",a[i]);

}printf("\n");

return

0;}

3.簡單選擇排序

這個就太簡單了,原理就不說了

#include 

#include

using namespace std;

int a[123456];

int main()

for(int i=0;iint

pos=i;

for(int j=i+1;jif(a[pos]>a[j])

}if(i!=pos)

}for(int i=0;iprintf("%d ",a[i]);

}printf("\n");

return

0;}

4.希爾排序

希爾排序的基本思想:先將整個帶排序列分割成若干個子串行,然後分別進行直接插入排序,待整個序列基本有序之後,再對全體記錄進行一次直接插入排序。

#include 

#include

#include

using namespace std;

int a[123456];

int data[12355];

int main()

int k=n,h=0;

/////////

//////

//////

//////

//////

//////

//////

//////

//////

//從k=n開始,重複k=k/2的運算,將結果存入data種,直到k=1為止

memset(data,0,sizeof(data));

dowhile(k>1);

h=0;

int dk;

while((dk=data[h])>0)

printf("\n");

return

0;}

5.快速排序

快速排序的基本思想:採用分治的思想,通過一趟排序將原序列分為兩個部分,key左邊全都小於key,右邊全都大於key,然後再分別對左右兩部分進行快拍,直到整個序列有序。

#include 

#include

#include

using

namespace

std;

int a[123456];

void quicksort(int a,int low,int high)

int key,i,j;

key=a[low];

i=low;

j=high;

while(iwhile(i=key) j--;

if(iwhile(iif(i1);

quicksort(a,i+1,high);

}int main()

quicksort(a,0,n-1);

for(int i=0; iprintf("%d ",a[i]);

}printf("\n");

return

0;}

6.歸併排序:

歸併排序的基本思想:將兩個或兩個以上的有序序列合併為乙個

void mergearray(int a, int first, int mid, int last, int temp)  

while (i <= m)

temp[k++] = a[i++];

while (j <= n)

temp[k++] = a[j++];

for (i = 0; i < k; i++)

a[first + i] = temp[i];

} void mergesort(int a, int first, int last, int temp)

} bool mergesort(int a, int n)

堆排序和基數排序的**我就不會了

下面是幾種排序的表

機器學習演算法歸類(更新)

c4.5決策樹 k 均值 k mean 支援向量機 svm apriori 最大期望演算法 em pagerank演算法 adaboost演算法 k 近鄰演算法 knn 樸素貝葉斯演算法 nb 分類回歸樹 cart 演算法。監督學習包括分類和回歸 問題,目標變數有兩種型別 標稱型和數值型。1.k 近...

排序演算法穩定性和不穩定性歸類

這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...

Mysql 命令歸類

連線mysql mysql uroot padmin hlocalhost 連線mysqladmin命令列客戶端程式 mysqladmin uroot padmin hlocalhost 啟動mysql mysqld 關閉 mysqladmin uroot padmin hlocalhost shu...