C#排序算法的实现---选择排序

一、算法原理

  每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

  选择排序算法的运作如下:

  1.对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置

  2.接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),               等到循环结束的时候,下标k的元素就是最小的数

  3.判断下标k的元素是不是第一个元素,否则就把下标k的元素和第一个元素交换

  4.以此类推

二、算法分析

  选择排序的时间复杂度是O(n^2),是不稳定的排序算法。

三、算法实现

public class SelectionSort
    {
       public void Sort(int[] list)
       {
           int k = 0;
           for (int i = 0; i < list.Length - 1; i++)
           {
               for (int j = i; j < list.Length; j++)
               {
                   if (list[k] > list[j])
                       k = j;
               }
               if (i != k)
               {
                   int temp = list[i];
                   list[i] = list[k];
                   list[k] = temp;
               }
           }
       }
    }

  

原文地址:https://www.cnblogs.com/DCLi/p/SelectionSort.html