【直接选择排序】
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++) { Listlist = 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; } } }
作者:石世特
出处:http://www.cnblogs.com/TivonStone/
希望本文对你有所帮助,想转随便转,心情好的话给我的文章留个链接.o(. .)o