經典的排序演算法如下:
交換排序
選擇排序
歸併排序
基數排序 / 桶排序
**實現:
//
// 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...