算法速成(一)七大经典排序2014-04-28 csdn博客 特种兵—AK47算法就好比程序开发中的利剑,所到之处,刀起头落。针对现实中的排序问题,算法有七 把利剑可以助你马道成功。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;using System.Threading;namespace BubbleSort{public class Program{static void Main(string[] args){//五次比较for (int i = 1; i <= 5; i++){List<int> list = new List<int>();//插入2k个随机数到数组中for (int j = 0; j < 2000; j++){Thread.Sleep(1);list.Add(new Random((int)DateTime.Now.Ticks).Next(0, 100000));}Console.WriteLine("
第" + i + "次比较:");Stopwatch watch = new Stopwatch();watch.Start();var result = list.OrderBy(single => single).ToList();watch.Stop();Console.WriteLine("
快速排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));watch.Start();result = BubbleSort(list);watch.Stop();Console.WriteLine("
冒泡排序耗费时间:" + watch.ElapsedMilliseconds);Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));}}//冒泡排序算法static List<int> BubbleSort(List<int> list){int temp;//第一层循环: 表明要比较的次数,比如list.count个数,肯定要比较count-1次for (int i = 0; i < list.Count - 1; i++){//list.count-1:取数据最后一个数下标,//j>i: 从后往前的的下标一定大于从前往后的下标,否则就超越了。for (int j = list.Count - 1; j > i; j--){//如果前面一个数大于后面一个数则交换if (list[j - 1] > list[j]){temp = list[j - 1];list[j - 1] = list[j];list[j] = temp;}}}return list;}}}