快速排序——算法系列
生活随笔
收集整理的這篇文章主要介紹了
快速排序——算法系列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快速排序:
思想:主要是利用了分而治之的思想,將一個大的排序問題簡化成一個一個小的問題。
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Net; using System.Threading;namespace ConsoleApplication1 {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("\n第" + i + "次比較:");Stopwatch watch = new Stopwatch();watch.Start();var result = list.OrderBy(single => single).ToList();//這里這個single=>single不懂 watch.Stop();Console.WriteLine("\n系統的快速排序耗費時間:" + watch.ElapsedMilliseconds);Console.WriteLine("輸出前是十個數:"+string.Join(",",result.Take(10).ToList())); watch.Start();new QuickSortClass().QuickSort(list, 0, list.Count - 1);watch.Stop();Console.WriteLine("\n自己的快速排序耗費時間:" + watch.ElapsedMilliseconds);Console.WriteLine("輸出前是十個數:" + string.Join(",", result.Take(10).ToList()));//這里也不是很懂 }Console.ReadLine();}//快速排序算法 }public class QuickSortClass{private int Division(List<int> list, int left, int right){int baseNum = list[left];while (left < right){while (left < right && baseNum <= list[right])right--;list[left] = list[right];while (left < right && baseNum >= list[left])left++;list[right] = list[left];}list[left] = baseNum;return left;}public void QuickSort(List<int> list, int left, int right){if (left < right){int i = Division(list, left, right);QuickSort(list, left, i - 1);QuickSort(list, i + 1, right);}}} }總結:
快速排序是排序算法中最快的算法了,快的程度令人發指。
http://www.cnblogs.com/huangxincheng/archive/2011/11/14/2249046.html
轉載于:https://www.cnblogs.com/7ants/archive/2013/03/11/2954299.html
總結
以上是生活随笔為你收集整理的快速排序——算法系列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Objective-C 语法
- 下一篇: Key_EXTI_Config:神舟IV