七大常用排序演算法

2021-09-26 19:18:14 字數 1542 閱讀 3923

//c++實現

void swap(int &left, int &right)

/*指標作為引數的交換函式

void swap1(int *left, int *right)

*/

//c++實現

void bubble_sort(vector&nums)}}

//c++實現

void bubble_sort_better(vector&nums)

}if(!flag)        //如果flag一直保持0,表示並沒有進行變換,表示後面的遍歷都是增序,就需要再進行排序了

break;}}

//c++實現

void choice_sort(vector&nums)}}

/c++實現

void shell_sort(vector&nums)}}

//c++實現

//兩個子陣列合併函式:$1:子陣列所在的陣列 $2:第乙個子陣列的起點 $3:第乙個子陣列的終點 $4:第二個子陣列的終點

void merge(vector&nums , int first , int mid , int tail)

while(left<=mid)

temp.push_back(nums[left]);

while(right<=tail)

temp.push_back(nums[right]);

int j=0;

for(int i=first;i<=tail && j&nums , int first , int tail)}}

以下是我對於堆排序的一些理解,作圖比較直觀,容易理解

//c++實現

void heapify(vector&nums, int i, int size)  // 從a[i]向下進行堆調整

void heap_sort(vector&nums)

}

//c++實現

//分割槽處理,將待排序陣列按照基準值分成左右子陣列,保證左子陣列全部小於右子陣列,並且找出基準值對應的分界索引值

int partition(vector&nums,int first,int tail)

return left;

}//遞迴函式

void quick_sort(vector&nums,int low,int high)

else    //遞迴終止條件

return ;

}main()

這兩篇部落格我覺得都寫得挺不錯的,其中也有參考他們的演算法,有興趣的可以仔細地看一下

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...

七大排序演算法

首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...