选择排序

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

思想很简单:在数组中搜索最小的数和第一个交换位置,第二个最小的值和第二个位置交换位置,依次类推

如果你觉得有困难,就先写一个依次找到小数,第二个最小数得程序,然后想办法找到这些数位置,最后再去实现位置得放置问题

代码实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SelectSort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[] { 5, 1, 7, 2, 4, 9, 3 };
            Console.WriteLine("排序之前:");
            foreach (int i in arr)
            {
                Console.Write(i.ToString() + " ");
            }
            Console.WriteLine();

            int min_index;//记录最小数的下标
            int tmp;//用于值交换
            for (int i =0;i<arr.Length;i++)
            {
                min_index = i;
                for(int j=i+1;j<arr.Length;j++)
                {
                    //如果min_index位置上那个数不是最小的,就更新min_index为新的最小值的那个下标
                    if (arr[min_index]>arr[j])
                    {
                        min_index = j;//寻找数组中值最小的那个位置
                    }

                }//一轮循环后,找到最小的值得位置是min_index,最小值应该放在第一位
                tmp = arr[i];//位置腾出来
                arr[i] = arr[min_index];//将小得那个值放上去
                arr[min_index] = tmp;
                //其实就是在数组中搜索最小得和第一个交换位置,第二个最小得值和第二个位置交换位置,依次类推
            }

            Console.WriteLine("排序之后的结果:");
            foreach (int i in arr)
            {
                Console.Write(i.ToString() + " ");
            }
            Console.WriteLine();
        }
    }
}


posted @ 2018-12-15 12:15  随时静听  阅读(96)  评论(0编辑  收藏  举报