都说快速排序是冒泡排序的改进,说实话,这点我还真不太明白,貌似两者没有直接关系啊,不知道改善的入手点是哪里,不管怎样,先来看看算法吧。
思路:
将一个数组一分为二,一个部分均比另一部分小,然后再分别对两部分进行排序,依此类推,即可完成排序。
算法:
using System;
using System.Collections.Generic;
using System.Text;
namespace sort
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 10, 3, 2, 5, 33, 23, 42, 26, 78 };
QSort qSort = new QSort();
qSort.QuitSort(array, 0, array.Length - 1);
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
Console.Read();
}
}
class QSort
{
internal void QuitSort(int[] array, int low, int high)
{
if (array.Length > 1 && low < high)
{
int middle = sort(array, low, high);
QuitSort(array, 0, middle - 1);
QuitSort(array, middle + 1, high);
}
}
private int sort(int[] array, int low, int high)
{
int key = array[low];
while (low < high)
{
if (key > array[high])
{
break;
}
high--;
}
array[low] = array[high];
while (low < high)
{
if (key < array[low])
{
break;
}
low++;
}
array[high] = array[low];
array[low] = key;
return low;
}
}
}