查询数据的排序的位置_简单选择排序C++实现
生活随笔
收集整理的這篇文章主要介紹了
查询数据的排序的位置_简单选择排序C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單選擇排序是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,第一次從下標為0的開始,將下標為0的這個數與后面的n-1個進行比較;找出最小或者最大的放在下標為0的這個位置;第二次從下標為1的開始比較;查詢剩下的最大或者最小值;放在下標為1的位置;直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法。
概念比較簡單,我們直接看代碼:
void select_sort(vector<int>& nums,int n){for(int i = 0;i < n;i++){int min = i;for(int j = i+1;j < n;j++){if(nums[j] < nums[min]){min = j;}}if(min != i){int tmp = nums[i];nums[i] = nums[min];nums[min] = tmp;}} }選擇排序和冒泡排序有點類似,都是將每次循環中的最值移動到數組的一端,可能會令一些人感到混亂,但其實區別地方還是挺多的。
(1)冒泡排序是比較相鄰位置的兩個數,而選擇排序是將一個數與它后面的所有數進行比較,找最大值或者最小值;
(2)冒泡排序每一輪比較后,位置不對都需要換位置,選擇排序每一輪比較都只需要換一次位置;
(3)兩者不同的比較方式決定了冒泡排序是穩定排序算法,選擇排序是不穩定排序算法,舉個例子對于數組{ 5,8,5,2,9 } ,對于選擇排序,第一遍選擇第一個元素5會和2交換,那么原序列中2個5的相對位置前后順序就破壞了)。
將兩種排序算法的動態圖放在一起看,會比較容易理解。
選擇排序:
冒泡排序:
總結
以上是生活随笔為你收集整理的查询数据的排序的位置_简单选择排序C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hsf 架构_java分布服务:我打赌,
- 下一篇: decimal是( )数据类型_SQL