zoukankan      html  css  js  c++  java
  • 直接选择排序

     1 static void Main(string[] args)
     2         {
     3             int n;
     4             n = int.Parse(Console.ReadLine());
     5             int[] SeqList = new int[n];
     6             for (int i = 0; i < n; i++)
     7             {
     8                 SeqList[i] = Convert.ToInt32(Console.ReadLine());
     9             }
    10             SelectSort(SeqList);
    11             foreach (var str in SeqList)
    12             {
    13                 Console.Write(str + "  ");
    14             }
    15             Console.ReadKey();
    16 
    17         }
    18         static void SelectSort(int[] s)
    19         {
    20             int i, j, k, temp;
    21             for (i = 0; i < s.Length - 1; i++)    //n-1次排序对n-1个记录进行了排序,此时剩下的一个记录必定是最大的,因此要做n-1次排序
    22             {
    23                 k = i;                              //k起一个实时保存最小值的作用
    24                 for (j = i + 1; j < s.Length; j++)
    25                     if (s[j] < s[k])
    26                         k = j;
    27                 if (k != i)
    28                 {
    29                     temp = s[i];
    30                     s[i] = s[k];
    31                     s[k] = temp;
    32                 }
    33             }
    34         }

     假设有这样一组序列:70 30 40 10 80 20 90 100 75 60 45

    第一趟70与30比,大于,k取30的索引,交换,此时k=1;s[k]再与40比较,小于,跳出,s[k]仍旧为30;再与10比较,大于,k取10的索引3,交换,依次类推。

    第一趟完成后为10 30 40 70 80 30 90 100 75 60 45   此时已将最小的数排在了第一位

    接下来便是把第二小的数排在第二位......

    时间复杂度

      第一次进行n-1次比较,第二次排序要进行n-2次比较,第n-1次排序要进行1次比较,索引总的次数为n(n-1)/2,复杂度为O(n^2)

  • 相关阅读:
    sqli-labs第五,六题
    Java 发送邮件
    Java 数据结构
    Java 序列化
    Java 文件注释
    Java 泛型
    Java 网络编程
    网站收藏
    JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
    Java 8 中的 Streams API 详解
  • 原文地址:https://www.cnblogs.com/gsh520/p/9649928.html
Copyright © 2011-2022 走看看