02八大排序演算法

2021-10-14 15:17:00 字數 1835 閱讀 1365

#include

using

namespace std;

//1、插入排序,先讓前面的有序

void

insertsort

(vector<

int>

&vec)

vec[j]

= tt;}}

}//2、氣泡排序,先讓後面的有序

void

bubsort

(vector<

int>

&vec)}}

}//3、選擇排序

void

selectsort

(vector<

int>

&vec)}}

//4、快速排序

void

quicksort

(vector<

int>

&vec,

int left,

int right)

vec[l]

=tmp;

quicksort

(vec,left,l-1)

;quicksort

(vec,l+

1,right);}

//5、合併排序

void

merge0

(vector<

int>

&vec,

int left,

int mid,

int right,vector<

int>tmp)

while

(i<=m)tmp[k++

]=vec[i++];

while

(j<=n) tmp[k++

]=vec[j++];

for(

int i=

0;i)vec[left+i]

=tmp[i];}

void

mergesort

(vector<

int>

&vec,

int left,

int right,vector<

int>tmp)

}//6、堆排序

void

adjust

(vector<

int>

&vec,

int idx)

}//要從1開始

void

heapsort

(vector<

int>

&vec)

cout<<}//7、基數排序

/*先按照個位排序,放入十個桶中。

先按照十位排序,放入十個桶中。

先按照百位排序,放入十個桶中。

先按照千位排序,放入十個桶中。(這個時候,因為百位是順序從桶中取出的,所以,百位有序)

....

*///8、外部排序

/*外部排序指的是大檔案的排序,即待排序的記錄儲存在外儲存器上,待排序的檔案無法一次裝入記憶體,需要在記憶體和外部儲存器之間進行多次資料交換,以達到排序整個檔案的目的。

一般情況下外部排序分為兩個步驟:預處理和合併排序。

常用的解決方法就是多路歸併排序演算法。

處理過程:

1.按可用記憶體的大小,把外存上含有n個記錄的檔案分成若干個長度為l的子檔案,把這些子檔案依次讀入記憶體,並利用有效的內部排序方法對它們進行排序,再將排序後得到的有序子檔案重新寫入外存。

2.對這些有序子檔案逐趟歸併,使其逐漸由小到大,直至得到整個有序檔案為止。

*/int

main()

heapsort

(vec)

;// for(int i:vec)

}

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...

八大排序演算法

排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...