【排序】选择排序,C++实现

# 基本思想

     每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。

排序实例

初始关键字 [49 38 65 97 76 13 27 49]

第一趟排序后 13 [38 65 97 76 49 27 49]

第二趟排序后 13 27 [65 97 76 49 38 49]

第三趟排序后 13 27 38 [97 76 49 65 49]

第四趟排序后 13 27 38 49 [76 97 65 49 ]

第五趟排序后 13 27 38 49 49 [97 65 76]

第六趟排序后 13 27 38 49 49 65 [97 76]

第七趟排序后 13 27 38 49 49 65 76 [97]

最后排序结果 13 27 38 49 49 65 76 97

# C++代码

# include<iostream>
# include<vector>
using namespace std;

void SelectSort(vector<int> vec)
{
    for(int i=0;i<vec.size()-1;++i)
    {
        // 初始化数组中最小元素的位置
        int min = i;

        // 寻找数组中最小元素的位置
        for(int j=i+1;j<vec.size();++j)//注意边界条件 j=i+1
        {
            if(vec[min]>vec[j])
                min = j;
        }

        // 更新最小元素
        if(min!=i)
        {
            int temp = vec[i];
            vec[i]=vec[min];
            vec[min]=temp;
        }

    }

    // 打印排序后的数组
    for(int i=0;i<vec.size();++i)
        cout<<vec[i]<<endl;

}

int main()
{
    vector<int > vec={49,38,65,97,76,13,27,49};
    SelectSort(vec);

    return 0;
}

  

 

原文地址:https://www.cnblogs.com/wanglei5205/p/8724331.html