查询数据的排序的位置_简单选择排序C++实现
簡單選擇排序是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,第一次從下標(biāo)為0的開始,將下標(biāo)為0的這個數(shù)與后面的n-1個進行比較;找出最小或者最大的放在下標(biāo)為0的這個位置;第二次從下標(biāo)為1的開始比較;查詢剩下的最大或者最小值;放在下標(biāo)為1的位置;直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法。
概念比較簡單,我們直接看代碼:
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;}} }選擇排序和冒泡排序有點類似,都是將每次循環(huán)中的最值移動到數(shù)組的一端,可能會令一些人感到混亂,但其實區(qū)別地方還是挺多的。
(1)冒泡排序是比較相鄰位置的兩個數(shù),而選擇排序是將一個數(shù)與它后面的所有數(shù)進行比較,找最大值或者最小值;
(2)冒泡排序每一輪比較后,位置不對都需要換位置,選擇排序每一輪比較都只需要換一次位置;
(3)兩者不同的比較方式?jīng)Q定了冒泡排序是穩(wěn)定排序算法,選擇排序是不穩(wěn)定排序算法,舉個例子對于數(shù)組{ 5,8,5,2,9 } ,對于選擇排序,第一遍選擇第一個元素5會和2交換,那么原序列中2個5的相對位置前后順序就破壞了)。
將兩種排序算法的動態(tài)圖放在一起看,會比較容易理解。
選擇排序:
冒泡排序:
總結(jié)
以上是生活随笔為你收集整理的查询数据的排序的位置_简单选择排序C++实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hsf 架构_java分布服务:我打赌,
- 下一篇: decimal是( )数据类型_SQL