开发者社区> 问答> 正文

c++中,详细讲解一下选择排序法。

c++中,详细讲解一下选择排序法。

展开
收起
知与谁同 2018-07-22 10:38:13 1442 0
2 条回答
写回答
取消 提交回答
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    #include <iostream>
    #include <valarray>
    using namespace std;
    void line(int*a,int n)//选择排序,从大到小,如果要从小到大,把中间那个if的小于号改成大于号
    {
    int i,j;
    for (i=1;i<=n-1;i++)//确保不重复
    for (j=i+1;j<=n;j++)
    if (a[i]<a[j])//前面的小于后面的
    swap(a[i],a[j]);//交换
    }
    int main()
    {
    int n,a[15];
    cin>>n;
    int i;
    for (i=1;i<=n;i++)cin>>a[i];
    line(a,n);
    for (i=1;i<=n;i++)cout<<a[i]<<" ";
    cout<<endl;
    system("pause");
    /*详细推倒过程
    随机写几个数
    5 1 6 4 7
    i=1,j=2
    5 1 6 4 7
    i=1,j=3
    6 1 5 4 7 //后面的比前面的大
    i=1,j=4
    6 1 5 4 7
    i=1,j=5
    7 1 5 4 6
    第一个已经为最大,从第二个开始
    i=2,j=3
    7 5 1 4 6
    i=2,j=4
    7 5 1 4 6
    i=2,j=5
    7 6 1 4 5
    第二个已经为次大
    后面的我不推了
    效率O(n*(n-1)/2)
    */
    return 0;
    }
    2019-07-17 22:49:56
    赞同 展开评论 打赏
  • 12535
    这是直接选择排序
    void SelectSort(DataType a[],int n)
    { int i,j,small;
    DataType temp;
    for( i = 0; i < n - 1;i ++)
    { small = i;
    for (j = i+1; j < n; j++ )
    if( a[j] < a[small] ) small = j;
    if ( small != i)
    { temp = a[i];
    a[i] = a[ small];
    a[small] = temp;

    }
    }
    }

    还有堆排序也是选择排序,如果想要的话再来问,并加分,还可以给你测试主程序
    2019-07-17 22:49:56
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载