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

浙公网安备 33010602011771号