C C 實現的各種排序

2021-10-24 07:22:38 字數 1601 閱讀 4164

/*

直插排序

*/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...