【直接选择排序】

4 2 5 3 9 6 8

直接选择排序的方式和人类的想法还是比较相似的,排除一些火星移民。

基本思想:第n次,从数组第n个位置开始,选一个最小的数,然后放到这个n位置上,从上面的这个例子就是

2 4 5 3 9 6 8
2 3 4 5 9 6 8

大概看懂了哦?下面是代码

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

namespace 直接选择排序
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i < 5; i++)
            {
                List list = new List();
                for (int j = 0; j < 2000; j++)
                {
                    Thread.Sleep(1);
                    list.Add(new Random((int)DateTime.Now.Ticks).Next(0, 10000));
                }
                Console.WriteLine("\n第" + i + "次比较:");
                Stopwatch watch = new Stopwatch();
                watch.Start();
                var result = list.OrderBy(single => single).ToList();
                watch.Stop();
                Console.WriteLine("\n快速排序耗费时间:" + watch.ElapsedMilliseconds);
                Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                watch.Start();
                result = DirecteSort(list);
                watch.Stop();
                Console.WriteLine("快速选择排序耗费时间:" + watch.ElapsedMilliseconds);
                Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));
                Console.WriteLine("----------------------------------------------------------");
            }
            Console.Read();
        }

        static List DirecteSort(List list)
        {
            for (int i = 0; i < list.Count-1; i++)
            {
                for (int j = i+1; j  list[j])
                    {
                        list[i] = list[i] ^ list[j];
                        list[j] = list[i] ^ list[j];
                        list[i] = list[i] ^ list[j];
                    }
                }
            }
            return list;
        }
    }
}

image