• 排序1-简单选择排序


    1. 选择排序的基本思想: 
      对n个记录进行扫描,选择最小的记录将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,……不断重复这个过程,直到剩下最后一个记录为止。
     1 //1.简单选择排序
     2  void selectSort(int a[],int num)
     3  {
     4      int min=0,temp=0;//记录最小数对应的下标
     5      for(int i=0;i<num-1;i++)
     6      {
     7          min=i;
     8          for (int j=i+1;j<num;j++)
     9          {
    10              if (a[min]>a[j])
    11              {
    12                  min=j;
    13              }
    14          }
    15          if (min!=i)
    16          {
    17             temp=a[i];
    18             a[i]=a[min];
    19             a[min]=temp;
    20          }
    21      }
    22  }
    23 
    24 
    25 int main()
    26 {
    27     int array[9]={0};
    28     srand(time(NULL));
    29     for (int i=0;i<9;i++)
    30     {
    31         array[i]=rand()%100;  //产生0-99的随机数
    32     }
    33     cout<<"排序之前的数组
    ";
    34     print(array,9);
    35     selectSort(array,9);
    36     cout<<"排序之后的数组
    ";
    37     print(array,9);
    38 
    39     system("pause");
    40     return 0;
    41 }

    运行结果: 
    这里写图片描述

    2.时间复杂度计算 
    第i趟需要进行n-i次比较,因此比较次数为n(n-1)/2. 交换次数,最好交换0次,最坏交换次数为n-1次。 最终的排序次数是比较和交换次数之和。因此,最终的总时间复杂度仍未为(n2)。

  • 相关阅读:
    Spring Boot
    AWS DynamoDB
    VBA读excel写xml
    WebSocket API 学习
    故障排除 Mybatis ORA-01000 和 本地缓存问题
    Java基础
    Java Tutorials Lambda表达式 翻译
    在代理环境中构建maven环境
    Pom
    我的JAVA笔记
  • 原文地址:https://www.cnblogs.com/584709796-qq-com/p/5936871.html
Copyright © 2020-2023  润新知