資料結構與演算法 - 選擇排序
阿新 • • 發佈:2021-12-24
選擇排序
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
- 重複第二步,直到所有元素均排序完畢。
程式碼實現
vector<int> select_sort(vector<int> &nums) { int nSize = nums.size(); for(int i = 0; i < nSize; i++) { int minIdx = i; for(int j = i; j < nSize; j++) { if(nums[j] < nums[minIdx]) { minIdx = j; } } // swap nums[i] and nums[minIdx] nums[i] = nums[i] & nums[minIdx]; nums[minIdx] = nums[i] & nums[minIdx]; nums[i] = nums[i] & nums[minIdx]; } return nums; }
特點
穩定性:排序過程中元素是按順序進行遍歷,相同元素相對位置不會發生變化,故穩定。
空間複雜度:在原序列進行操作,故為 \(O(1)\);
時間複雜度:需要 2 次迴圈遍歷,故為 \(O(n^2)\);