演算法 c 實現各種經典內部排序

2021-09-14 02:11:13 字數 3129 閱讀 3522

經典的排序演算法如下:

交換排序

選擇排序

歸併排序

基數排序 / 桶排序

**實現:

//

// main.cpp

// sort

//// created by peiyu wang on 2019/3/28.

//#include

#include

#include

#include

using namespace std;

const vector<

int> dlta =

;/* 插入排序 */

// 直接插入排序

void

insertsort

(vector<

int>

&v) v[j+1]

= v[0]

;}}// 折半插入排序

// 在排好序的位置進行折半查詢

// 減少了關鍵字的比較次數,可是移動的時間複雜度不變,所以仍為n*n

void

binary_insertsort

(vector<

int>

&v)else

}for

(int j = i -

1; j >= low; j--

) v[low]

= v[0]

;}}void

shell_insert

(vector<

int>

&v,int dx)

v[j + dx]

= v[0]

;}}// 希爾排序

// 縮小增量的方法進行排序

void

shell_sort

(vector<

int>

&v)}

/* 交換排序 */

// 氣泡排序

void

bubblesort

(vector<

int>

&v)}}}

// 快速排序

void

quicksort

(vector<

int>

&v,int low,

int high)

while

(v[low]

<= v[0]

&& low < high)

int tmp = v[low]

; v[low]

= v[high]

; v[high]

= tmp;

} v[min]

= v[low]

; v[low]

= v[0]

;if(low >

1+ min)

quicksort

(v, min, low -1)

;if(low < max -1)

quicksort

(v, low +

1, max);}

// 雞尾酒排序

void

cocktailsort

(vector<

int>

&v)}

for(

int j = i; j >

int(v.

size()

)- i; j--)}

}}/* 選擇排序 */

// 堆排序

void

createheap

(vector<

int>

&v,int root,

int max)if(

2* root +

1<= max && v[

2* root +1]

> t_max)

if(t_num != root)}}

void

heapsort

(vector<

int>

&v)for

(int i =

1; i <

int(v.

size()

)-1; i++)}

// 歸併排序

void

merge

(vector<

int>

&v,int low,

int high)

else

}while

(i <= mid)

while

(j <= high)

for(

int k =

0; k < high - low +

1; k++)}

}void

mergesort

(vector<

int>

&v,int low,

int high)

}int

main

(int argc,

const

char

* ar**)

cout <<

"隨機產生的陣列為:"

<< endl;

ostream_iterator<

int>

out(cout,

" ")

;copy

(n.begin()

+1, n.

end(

), out)

; cout << endl;

//shell_sort(n);

//quicksort(n, 1, int(n.size()) - 1);

//heapsort(n);

//cocktailsort(n);

mergesort

(n,1

,int

(n.size()

)-1)

;//ostream_iteratorout(cout, " ");

cout <<

"排序後的陣列是:"

<< endl;

copy

(n.begin()

+1, n.

end(

), out)

; cout << endl;

return0;

}

各種排序演算法C 實現

各種排序演算法的實現 交換函式 void swap int list,int low,int high 小於函式 bool lt const int low,const int high 插入排序 穩定 原理 插入排序逐個處理待排序的記錄。每個新記錄與前面已排序的子串行進行比較,將它插入到子串行中正...

各種排序演算法C 實現

include include include using namespace std 插入排序 void insertsort int num,int len 氣泡排序 void bubblesort int num,int len if flag break 選擇排序 void selectso...

經典排序演算法C 實現

用c 實現了經典的氣泡排序 插入排序 選擇排序 堆排序 快速排序 希爾排序 歸併排序。等空閒的時候再補充每個排序演算法的思想以及易錯點。氣泡排序 void bubble sort vector arr,int n if swaped 0 break else swaped 0 插入排序 withou...