武漢乙個陽光不算好不算壞的、絲毫沒有夏意的夏日的週日寫的四大排序演算法。
插入排序就像是給我們要排序的元素找乙個合適的「坑」填進去一樣。每一次都把元素與前面的元素比較,若是前面的元素比現在的元素大,則前面的元素下移,直到找到合適的「坑」。**如下:
void insertionsort(int a,int n)
a[i+1]=key;
}}
歸併排序用到了遞迴。基本思想是將要排序的陣列從中間分為左右兩個子陣列,再遞迴對左右兩個子陣列進行排序,最後將排序好的左右子陣列進行歸併。歸併的過程好像是在打撲克的前奏即取牌。首先取出最前面的兩個,進行比較,小的那一邊先放入陣列,並取這一邊的下乙個數,再進行比較,直至兩邊均取至最大值(通常設定左右子陣列的最後乙個元素為無窮大)。**如下:
void mergesort(int a,int p,int r){
int q;
if(p
void merge(int a,int p,int q,int r){
int i=0,j=0,k;
int n1=q-p+1;
int n2=r-q;
int *l=(int *)malloc(sizeof(int)*(n1+1));
int *r=(int *)malloc(sizeof(int)*(n2+1));
for(i=0;i
選擇排序的風格比較符合我的胃口。選擇排序首先選出陣列中最小的元素,將其放在第「1」個,然後依次選出第二小,第三小。。。放在第」2「個,第」3「個。。。。好任性的演算法。**如下:
void selectsort(int a,int n){
int i,key,k,j;
for(i=0;i
《演算法導論》書上對氣泡排序演算法的形容是流行但低效的排序演算法。它的基本思想是反覆交換沒有排序好的演算法,始終保持最前面的是最小的。畢竟是bubble,挺可愛的。嘿嘿。話不多說,上**:
void bubblesort(int a,int n){
int i,j,key;
for(i=0;ii;j--){
if(a[j]
這就是今天的成果了,其實還看了一下mfc,等看的差不多再寫mfc好了。
要有力氣的活著~哈哈哈哈~
晚安~
小白排序之歸併排序
白話經典演算法系列之五 歸併排序的實現 歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。首先考慮下如何將將二個有序數列合併。這個非常簡單,只要從比較二個數列的第乙個數,誰小就先取誰,取了後就在對應數列中刪除這個數。然...
排序演算法之選擇排序 插入排序 氣泡排序 歸併排序
1.選擇排序 基本原理 對於給定的一組記錄,第一輪選擇最小 大 值,與第一條記錄進行交換。然後從剩餘元素中,找出最小 大 值,與第二條記錄進行交換,知道記錄中未排序元素個數為0.該演算法時間複雜度為o n 2 def sort quickly data n len data for i in ran...
氣泡排序,選擇排序,插入排序,歸併排序
1.氣泡排序 氣泡排序的思想,將陣列分為已排 右邊 和未排 左邊 兩部分。排序時每次在未排部分從左向右一次比較相鄰2個元素,如果左大於右則互換位置。每次都是指標從左邊第乙個依次相鄰比較,到指標指向倒數第二個未排結束比較。test 氣泡排序 public void fun4 int left 0 陣列...