排序方法8大總結

2021-09-24 17:31:57 字數 1373 閱讀 3994

1.氣泡排序:

思想:一共進行n-1次比較(假定序列個數為n),每次比較重都會有乙個最大的元素沉底

#includeusing namespace std;

void bubblesort(int a,int length)

}}

2.選擇排序:

演算法思想:

在每次遍歷序列時,通過將該位值元素與之後序列中的元素直接比較,獲得最小的元素放到該位置

void selectsort(int a,int length)

}void shellsort(int a,int length)

; shellsort(a,length,gap,9);

}

思想:

歸併演算法,指的是將兩個已經排序的序列合併成乙個序列的操作。歸併操作的演算法原理為:

1.申請空間,使其大小為兩個已經排序序列之和,用來存放合合併後的序列

2.設定兩個指標,分別指向兩個已經排好序的序列的起始位置。

3.比較兩個指標所指向的元素,選擇相對較小的元素放入合併空間中,並移動指標到下乙個位置

4.重複步驟3,直到某一指標到達序列為

5將另一串行剩下的所有元素直接賦值到合併序列尾部

6.將排好序的合併空間的所有元素賦值給原序列

歸併排序的具體原理(假定序列共有n個元素):

1.將序列每相鄰兩個數字進行歸併操作(merge),形成floor(n/2)個序列,排序後的每個序列包含兩個元素

2.將上訴序列再次歸併,形成floor(n/4)個序列,每個序列包含四個元素。

void merge(int *array,int first,int mid,int last)

h[start]= temp; //插入最開始的根節點元素

}void heapsort(elemtype a,int n)

}

測試主程式如下:

#includeusing namespace std;

int main()

; //selectsort(a,10);

//bubblesort(a,10);

//straightinsertsort(a,10);

//binaryinsertsort(a,10);

//shellsort(a,10);

//mergesort(a,10);

//quicksort(a,10);

heapsort(a,10);

for(int i=0;i<10;i++)

cout

8大排序總結

include includeusing namespace std void select sort vector a 選擇排序 非穩定 void bubble sort vector a 氣泡排序 void insert sort vector a 插入排序 有序最快 void shell so...

排序 總結(8)

穩定排序 氣泡排序 bubble sort o n 插入排序 insertion sort o n 桶排序 bucket sort o n 需要 o k 額外空間 計數排序 counting sort o n k 需要 o n k 額外空間 合併排序 merge sort o n log n 需要 ...

8大排序演算法

一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...