C#选择排序

1.概要

选择排序也属于内部排序法,是从需要排序的数据中,按制定的规则选出某一元素,再依定交换位置后达到排序的目的。.

思想:

选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从array[0] ~ array[n-1]中选取最小值,与array[1]交换,第三次从array[2] ~ array[n-1]中选取最小值,与array[2]交换....第i次从array[i-1]中选取最小值,与array[i-1]交换,...,第n-1次从array[n-2]~array[n-1]中选取最小值,与array[n-2]交换,总共通过n-1次,得到一个按序从小到大排列的有序序列。

C#选择排序

再次举例:

原始数组:101,34,119,1

第一轮:1,34,119,101

第二轮:1,34,119,101

第三轮:1,34,101,119

说明:

1.选择排序一共有数组大小-1轮排序

2.每轮排序,又是一个循环

2.1先假定当前这个数是最小数

2.2然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标

2.3当便利到数组的最后是,就得到本轮最小数和下标

2.4交换

2.详细内容

   public class SelectSort
  {
       public static void Sort(int[] array)
      {
           for (int i = 0; i < array.Length -1; i++)
          {
               //使用逐步推导的方式来进行选择排序
               int minIndex = i;
               int min = array[i];
               for (int j = i + 1; j < array.Length; j++)
              {
                   if (min > array[j])
                  {
                       min = array[j];
                       minIndex = j;
                  }
              }
               if (minIndex != i)
              {
                   //将最小值,挡在array[0],即交换
                   array[minIndex] = array[i];
                   array[i] = min;
              }
               Console.WriteLine($"第{ i + 1 }轮排序后!");
               Console.WriteLine(string.Join(' ', array));
          }
      }
  }
       static void Main(string[] args)
      {
           int[] array = { 101,34,119,1 };
           SelectSort.Sort(array);
           Console.Read();
      }

C#选择排序