直接交換排序:
遍歷未排序陣列,每次找出其中最小值,將其置入已排序的陣列中。
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 輸入 待排序元素的陣列,待排序元素個數 輸出 原理 通過無序區中相鄰元素間關鍵字的比較和位置的交換,使關鍵字最小的元素如氣泡一...