十大排序演算法 C 實現

2021-09-22 20:49:51 字數 2989 閱讀 1665

//

#include

"stdafx.h"

#include

#include

#include

using namespace std;

//1氣泡排序

void

bubblesort

(vector<

int>

&v)}}}

//2選擇排序

void

seletionsort

(vector<

int>

&v)}}}

//3插入排序

void

insertsort

(vector<

int>

&v)//當前值小於v[j]

v[j +1]

= v[j];}

v[j +1]

= temp;}}

//4桶排序,n為桶的數量

void

bucketsort

(vector<

int>

&v,int n)

for(

int i =

0; i < n; i++

)int k =0;

for(

int i =

0; i < n; i++)}

}//5計數排序

void

countsort

(vector<

int>

&v);

for(

int i =

0; i < v.

size()

; i++

)int k =0;

for(

int i =

0; i < num; i++)}

//6基數排序

void

radixsort

(vector<

int>

&v);

//10個桶,

vector<

int> output;

output.

resize

(v.size()

);//規定大小

for(

int i =

0; i < v.

size()

; i++

)for

(int i =

1; i <

10; i++

)for

(int i = v.

size()

-1; i >=

0; i--

)for

(int i =

0; i < v.

size()

; i++)}

}//7快速排序1,最後的數當作中間值,第乙個數為基數值

void

quicksort1

(vector<

int>

&v,int begin,

int end)

if(left < right)

} v[left]

= temp;

quicksort1

(v,begin,left-1)

;quicksort1

(v, left +

1, end);}

//8歸併排序

//合併兩個有順序的陣列

void

merge

(vector<

int>

&v,int begin,

int mid,

int end)

//合併

else

}while

(i <= mid)

while

(j <= end)

for(

int i =

0; i size()

; i++

) result.

clear()

; vector<

int>()

.swap

(result);}

//歸併排序

void

mergesort

(vector<

int>

&v,int begin,

int end)

//歸併排序

//9希爾排序,i起始點,gap間隔,步長

void

group_sort

(vector<

int>

&v,int i,

int gap)

v[k + gap]

= temp;}}

void

shellsort

(vector<

int>

&v)}

}//10堆排序,從小到大

//最大堆,向下調整,調整和父節點交換的子節點

void

maxheapdown

(vector<

int>

&v,int begin,

int end)

else}}

void

heapsort

(vector<

int>

&v)//得到從小到大的排序的陣列,最後剩下的元素肯定是最小的

for(

int i = v.

size()

-1; i >

0; i--)}

//堆排序,從大到小

void

minheapdown

(vector<

int>

&v,int begin,

int end)}}

void

minheapsort

(vector<

int>

&v)for

(int i = len -

1; i >

0; i--)}

intmain()

return0;

}

十大排序演算法(C 實現)

排序演算法 平均時間複雜度最好情況最壞情況空間複雜度穩定性 氣泡排序 o n o n o n o 1 穩定選擇排序 o n o n o n o 1 不穩定插入排序 o n o n o n o 1 穩定希爾排序 o nlogn o o n o 1 不穩定歸併排序 o nlogn o nlogn o n...

十大排序演算法(c )

1.氣泡排序 每一輪都從頭開始比較,比較當前數與後一位數,若當前數大於後一位數則進行交換,每一輪都會在末尾得到一位排序正確的數,因此每一輪比較結束,下一輪的比較範圍將縮小 ja j 1 if ischange break 2.插入排序 每一輪將當前數 a i 插入到前面已經排序好的合適位置,因此關鍵...

十大排序演算法(C )

原理 比較相鄰兩個元素,如果前乙個比後乙個大則交換二者位置 以公升序為例 每進行一輪比較則可以把最大的元素放到相對最後的位置。每進行一輪比較就會有乙個元素變為有序。迴圈對每輪越來越少的元素進行比較則最終變為有序序列。如果序列元素初始時為有序,則一輪則可進行排序完畢,最好時間複雜度為o n 如果序列元...