选择排序 算法
算法思路
- 維護一段有序數列,同時遍歷待排序數列,找到最小的元素插入有序數列中
- 重復,直到待排序數列沒有剩余元素
代碼實現
void select_sort(vector<int> &arr) {for (int i = 0;i < arr.size(); ++i) {int temp = arr[i];int index = i;for (int j = i + 1; j < arr.size(); ++j) {//找到待排序數列的最小元素if(arr[j] < temp) {temp = arr[j];index = j;}}swap(arr[i],arr[index]);//置換}
}
算法分析
時間復雜度:無論最好情況還是最壞情況,都是O(n^2),因為每次選擇最小元素都要遍歷剩余的所有元素
空間復雜度:O(1),swap時的臨時變量
總結
- 上一篇: 希尔排序 算法
- 下一篇: 直径1.4米梧桐树高七米左右两棵值多少钱