//
#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 如果序列元...