1. 程式人生 > 其它 >資料結構與演算法 - 選擇排序

資料結構與演算法 - 選擇排序

選擇排序

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  • 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
  • 重複第二步,直到所有元素均排序完畢。

程式碼實現

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)\);