zoukankan      html  css  js  c++  java
  • 【排序】选择排序,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;
    }
    

      

     

  • 相关阅读:
    HDU 1301 Jungle Roads
    HDU 1671 Phone List
    HDU 1992 Tiling a Grid With Dominoes
    HDU 1251 统计难题
    总结自己的近期表现
    Windows API 函数: SetClassLong
    ModifyStyle
    assert,assert_valid,verify,trace用法
    用VC++绘制位图按钮
    Codeforces 144D. Missile Silos 最短路
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8724331.html
Copyright © 2011-2022 走看看