zoukankan      html  css  js  c++  java
  • 实习之路--点滴积累四_选择

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

    原理:

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

    如,对于数组 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 }

    实验截图:

  • 相关阅读:
    计算欧拉函数值
    矩阵快速幂
    约瑟夫环数学公式
    整型输出输入优化
    计算机设计第三章
    计算机设计第二章
    计算机设计
    阿里巴巴秋招2017客户端附加题
    程序设计基本概念
    c++面试题
  • 原文地址:https://www.cnblogs.com/casparzheng/p/4371976.html
Copyright © 2011-2022 走看看