您的位置:首页 > 其它

快速排序算法

2016-05-19 13:56 225 查看
快速排序的原理很简单:先选定集合中一个数,然后将大于它的数字都放在它的右侧,将小于它的数字都放在它的左侧。然后对它左侧和右侧的子集合重复这个过程,直到每个子集合只有一个元素为止。这就是分治法的思想,将大的问题分解为一个个小的问题来解决。

using System;

namespace test01
{
class Program
{
static int sortCount = 0;
static void Main(string[] args)
{
int [] array = {2,3,5,6,4,1,8};
Console.Write("数组未排序: ");
foreach (int s in array)
{
Console.Write("  " + s);
}
Console.WriteLine("");

FastSort(array, 0, array.Length - 1);
Console.ReadKey();
}

static void FastSort(int[] array, int start, int end)
{
if(start >= end)
return;
int low = start;
int high = end;
int key = array[low];
while(low < high)
{
while(low < high && array[high] >= key)
{
high--;
}
if(low < high)
{
array[low] = array[high];
low++;
}
while(low < high && array[low] <= key)
{
low++;
}
if(low < high)
{
array[high] = array[low];
high--;
}
}
array[low] = key;
Console.Write("第" + (++sortCount) + "次排序后:");
foreach (int s in array)
{
Console.Write("  " + s);
}
Console.WriteLine("");
FastSort(array, low + 1, end);
FastSort(array, start, low - 1);
}

}
}
输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: