冒泡排序

来源:互联网 发布:淘宝不能晒单 编辑:程序博客网 时间:2024/05/16 09:07
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Diagnostics;  
  6. using System.Threading;  
  7.   
  8. namespace BubbleSort  
  9. {  
  10.     public class Program  
  11.     {  
  12.         static void Main(string[] args)  
  13.         {  
  14.             //五次比较  
  15.             for (int i = 1; i <= 5; i++)  
  16.             {  
  17.                 List<int> list = new List<int>();  
  18.                 //插入2k个随机数到数组中  
  19.                 for (int j = 0; j < 2000; j++)  
  20.                 {  
  21.                     Thread.Sleep(1);  
  22.                     list.Add(new Random((int)DateTime.Now.Ticks).Next(0100000));  
  23.                 }  
  24.                 Console.WriteLine("\n第" + i + "次比较:");  
  25.                 Stopwatch watch = new Stopwatch();  
  26.                 watch.Start();  
  27.                 var result = list.OrderBy(single => single).ToList();  
  28.                 watch.Stop();  
  29.                 Console.WriteLine("\n快速排序耗费时间:" + watch.ElapsedMilliseconds);  
  30.                 Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));  
  31.                 watch.Start();  
  32.                 result = BubbleSort(list);  
  33.                 watch.Stop();  
  34.                 Console.WriteLine("\n冒泡排序耗费时间:" + watch.ElapsedMilliseconds);  
  35.                 Console.WriteLine("输出前是十个数:" + string.Join(",", result.Take(10).ToList()));  
  36.             }  
  37.         }  
  38.   
  39.         //冒泡排序算法  
  40.         static List<int> BubbleSort(List<int> list)  
  41.         {  
  42.             int temp;  
  43.             //第一层循环: 表明要比较的次数,比如list.count个数,肯定要比较count-1次  
  44.             for (int i = 0; i < list.Count - 1; i++)  
  45.             {  
  46.                 //list.count-1:取数据最后一个数下标,  
  47. //j>i: 从后往前的的下标一定大于从前往后的下标,否则就超越了。  
  48.                 for (int j = list.Count - 1; j > i; j--)  
  49.                 {  
  50.                     //如果前面一个数大于后面一个数则交换  
  51.                     if (list[j - 1] > list[j])  
  52.                     {  
  53.                         temp = list[j - 1];  
  54.                         list[j - 1] = list[j];  
  55.                         list[j] = temp;  
  56.                     }  
  57.                 }  
  58.             }  
  59.             return list;  
  60.         }  
  61.     }  
0 0
原创粉丝点击