排序演算法 直接交換排序 歸併排序 快排

2021-06-25 17:54:29 字數 955 閱讀 6265

直接交換排序:

遍歷未排序陣列,每次找出其中最小值,將其置入已排序的陣列中。

code:

void select(int *a,int n)

swap(a[temp],a[i]);

}}

歸併排序:

分治,將乙個數字從中切開,分為兩個陣列,對兩個陣列進行排序,之後合併。

code:

void mergearr(int *a,int begin,int mid,int end,int *temp)

while(i<=m)

temp[k++] = a[i++];

while(j<=n)

temp[k++] = a[j++];

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

a[begin + i] = temp[i];

}void mergesort(int *a,int begin,int end,int *temp)

}bool merge(int *a,int n)

快排:1.從數列中取出乙個數作為基準

2.將數列中其他數字與其比較,大於該數的數字置於左邊,小於該數的數字置於右邊。

3.對左右區間重複執行以上過程

每次排序可確定乙個數的位置

void quick(int *a,int l,int r)

{ if(l < r)

{ int i = l , j = r , x = a[l];

while(i < j)

{ while(i < j && a[j] >= x)

j--;

if(i < j)

a[i++] = a[j];

while(i < j && a[i] < x)

i++;

if(i

歸併排序 交換排序 選擇排序 插入排序總結

一 歸併排序 遞迴實現 自上向下 非遞迴排序 自下向上 void merge int arr,int low,int mid,int high,int tmp using namespace std int partition1 int arr,int low,int high 優化1 if i j...

排序演算法 氣泡排序 快排 歸併排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...

排序演算法 交換排序

交換排序的基本思想 兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反時則進行交換,直到沒有反序的元素為止。1.氣泡排序 交換排序 演算法 氣泡排序 bubble sort 輸入 待排序元素的陣列,待排序元素個數 輸出 原理 通過無序區中相鄰元素間關鍵字的比較和位置的交換,使關鍵字最小的元素如氣泡一...