• 实习之路--点滴积累四_选择


    继续排序吧,一直到底。接下来该选择排序了。

    原理:

    将数组分为两部分,已经排好序的,和未排好序的,假设是从小到大排序,左边为未排好序的,右边为排好序的。

    如,对于数组 s[] = { 3, 1, 8, 5, 9, 4, 2, 6, 7, 10 };来说

    (1)扫描一遍数组,从中选择一个最大的元素               //此时选中的是10

    (2)将该最大的元素与数组中未排好序的部门的末尾元素交换位置    //第一遍时,将10 和 10 交换,

    (3)循环上述操作即可           // 执行一遍后,数组 s[] = { 3, 1, 8, 5, 9, 4, 2, 6, 7, 10 },其中未排好序的为下划线部分,已排好序的为10。

    代码如下:

     1 void Select_Sort(long *p, int n)
     2 {
     3     for (long i = 0; i < n; i++)
     4     {
     5         long  k = 0, j;
     6         for ( j = 0; j < n - i; j++)
     7         {
     8             if (p[k] < p[j])
     9             {
    10                 k = j;
    11             }
    12         }
    13         long temp = p[k];
    14         p[k] = p[j - 1];
    15         p[j - 1] = temp;        
    16     }    
    17 }

    主函数测试代码:

    1 int main()
    2 {
    3     long s[] = { 3, 1, 8, 5, 9, 4, 2, 6, 7, 10 };
    4     Select_Sort(s, 10);
    5     for (long i = 0; i < 10; i++) cout << s[i] << ends << ends;    
    6     return 0;
    7 }

    实验截图:

  • 相关阅读:
    今天,你ak了吗?①
    线段树模板
    DP(关于字符串,数字串的)
    Leedsdiscussion
    高数积分求旋转体体积
    tiny mission
    莫队+数组低级化的 优先队列
    LAB2
    Leedslecturepronouncation
    Eclipse Access Restriction
  • 原文地址:https://www.cnblogs.com/casparzheng/p/4371976.html
Copyright © 2020-2023  润新知