/*
直插排序
*/void
insertsort
(vector<
int>
&arr)
else
break;}
}}/*氣泡排序
*/void
bubblesort1
(vector<
int>
&arr)}if
(flag)
return;}
}void
bubblesort2
(vector<
int>
&arr)}if
(flag)
return;}
}/*快速排序
*/void
quicksort
(vector<
int>
&arr,
int left,
int right)
arr[i]
= arr[j]
;while
(i < j && key >= a[i]
) arr[j]
= arr[i];}
arr[i]
= key;
/*當在當組內找完一遍以後就把中間數key回歸*/
quicksort
(arr, left, i -1)
;quicksort
(arr, i +
1, right);}
/*歸併排序
*///歸併排序(遞迴)
void
merge
(int
* a,
int* b,
int start,
int end)
while
(start2 <= end2)
//將臨時的陣列拷貝到原來陣列
for(k = start;k <= end;k++
) a[k]
= b[k];}
void
mergesort
(int
*a,int
*b,int len)
/**************************************/
//希爾排序 速度很難定量 但是效率挺高的 不穩定的演算法
void
shellsort
(int a,
int len)
}else
break;}
gap=gap/3+
1;//增量計算公式
if(flag)
break;}
}//堆排序
void
heapsort
(int arr,
int len)
//從堆中的取出最大的元素再調整堆
for(i = len -
1;i >0;
--i)
}//再看 調整成堆的函式
void
heapify
(int arr,
int first,
int end)
}}
c c 各種排序
一 各種排序方法的時間 空間複雜度情況 1 直接插入排序 比較次數 最少n 1次 最多 n 1 n 2 2 移動次數 最少0 最多 n 1 n 4 2 使用乙個輔助儲存空間,是穩定的排序 2 折半插入排序 比較次數 最少與最多同,都是n log2n 其中2為底,下邊表示同 移動次數 最少0,最多時間...
C C 各種排序演算法
低階排序演算法 氣泡排序 選擇排序 插入排序 在低階排序演算法最快 高階排序演算法 快速排序 歸併排序 堆排序 演示 演示 include using namespace std void insertsort int a,int n a out temp intmain len sizeof a ...
排序演算法的實現 C C 實現
存檔 1 include 2 include 3 include 4 define maxsize 20 5using namespace std 6int main 749 cout 50 cout 請重新輸入您的選擇 51 cin num 52 53return0 54 1 typedef st...