資料結構的幾種經典排序演算法

2021-10-01 08:45:05 字數 2835 閱讀 9285

#include

#include

/*** 排序演算法

*///偽版氣泡排序

void

bubblesort

(int k,

int n)}}

printf

("總共進行了%d次比較,進行了%d次移動!"

,count1,count2);}

//氣泡排序

void

bubblesortplus

(int k,

int n)}}

printf

("總共進行了%d次比較,進行了%d次移動!"

,count1,count2);}

//選擇排序

void

selectsort

(int k,

int n)}if

(min != j)

}printf

("總共進行了%d次比較,進行了%d次移動!"

,count1,count2);}

//直接插入排序

void

insertsort

(int k,

int n)

k[j+1]

= temp;}}

}//希爾排序

void

shellsort

(int k,

int n)

k[j+gap]

= temp;}}

}while

(gap >1)

;}//堆排序

void

swap

(int k,

int i,

int j)

void

heapadjust

(int k,

int s,

int n)

if(temp >= k[i]

) k[s]

= k[i]

; s = i;

} k[s]

= temp;

}void

heapsort

(int k,

int n)

for(i=n;i>

1;i--)}

//歸併排序(遞迴)

void

merging

(int

*list1,

int list1_size,

int*list2,

int list2_size)

else

}while

(i < list1_size)

while

(j < list2_size)

//實現歸併,把最後的資料存到list1裡

for(m=

0;m<

(list1_size+list2_size)

;m++)}

void

mergesort

(int k,

int n)

}//歸併排序(迭代)

void

mergesort

(int k,

int n)

next =0;

while

(left_minelse

}while

(left_minwhile

(next >0)

}}}//快速排序

intpartition

(int k,

int low,

int high)

if(k[m]>k[high])

if(k[m]>k[low])

*/point = k[low]

;while

(lowswap

(k,low,high)

;/*改進**2

k[low] = k[high];//改變不必要的交換

*/while

(low<= point)

swap

(k,low,high)

;/*改進**2

k[high] = k[low];//改變不必要的交換

*/}/*改進**2

k[low] = point;//改變不必要的交換

*/return low;

//返回中間點

}void

isort

(int k,

int low,

int high)

void

qusort

(int k,

int low,

int high)

/*改進**3

if(high-low>7)else

*//*改進**4,偽遞迴

if(high-low>7)

void

quicksort

(int k,

int n)

//快速排序的優化

intmain()

;//bubblesort(a,10);

//bubblesortplus(a,10);

//selectsort(a,10);

//insertsort(a,10);

//shellsort(a,10);

//heapsort(a,10);

//mergesort(a,10);

//mergesort(a,10);

quicksort

(a,10);

printf

("排序後的結果是:\n");

for(i=

0;i<

10;i++

)return0;

}

大話資料結構 幾種排序演算法

這篇筆記主要是寫寫這些常見的排序演算法。思想 兩兩比較相鄰記錄的關鍵字,反序則交換,直到沒有反序為止。include 交換int型陣列l中下標i和j的值 void swap int l,int i,int j void bubblesort int l 分析 最好的情況比較n 1次,時間複雜度o n...

資料結構 幾種常見的排序演算法

下圖是我掌握的一些排序演算法,我將他們做了分類,當然,排序演算法遠不止這些。a 演算法思想 假設第乙個數是有序的,那麼把後面的數拿出來插入到這個有序數的合適位置,假設是公升序 比第乙個數小則向後移動第乙個數,將數插入到第乙個數的前面 插入後有序區間擴大為兩個,依次向後,不斷拿出新的數插入到有序區間,...

資料結構經典演算法之希爾排序

目錄 希爾排序 一 操作方法 二 排序方法 三 演示 四 c 實現 五 效能分析 希爾排序又稱 縮小增量排序 基本思想 先取乙個小於n的整數d1作為第乙個增量,然後把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同個乙個組中,現在各組內進行直接插入排序 然後,取第二個增量d2實質上希爾排...