开发工具与关键技术:Visual Studio2015
撰写时间:2019年8月07日
冒泡排序相邻两两比较泡泡冒得太慢,于是,为了提高效率,还有一种快速排序,快速
排序是对冒泡排序的一种改进。
基本思想:从待排序中任取一个元素作为中心,所有比它小的元素一律前放,形成左右两个子表,然后再对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个,此时便为有序序列了(整个排序过程可以递归进行,以此达到整个数据变成有序序列。)
优点:因为每趟可以确定不止一个元素的位置,而且呈指数增加,所有特别快
适用于大量数据,不要求排序稳定性的场合
namespace 快速排序
{
class Program
{
static void Main(string[] args)
{
int[] array = { 49, 38, 65, 97, 76, 13, 27 };
sort(array, 0, array.Length - 1);
Console.ReadLine();
}
private static int sortUnit(int[] array, int low, int high)
{
int key = array[low];
while (low < high)
{
/*从后向前搜索比key小的值*/
while (array[high] >= key && high > low)
--high;
/*比key小的放左边*/
array[low] = array[high];
/*从前向后搜索比key大的值,比key大的放右边*/
while (array[low] <= key && high > low)
++low;
/*比key大的放右边*/
array[high] = array[low];
}
/*左边都比key小,右边都比key大。//将key放在游标当前位置。//此时low等于high */
array[low] = key;
foreach (int i in array)
{
Console.Write("{0}\t", i);
}
Console.WriteLine();
return high;
}
public static void sort(int[] array, int low, int high)
{
if (low >= high)
return;
/*完成一次单元排序*/
int index = sortUnit(array, low, high);
/*对左边单元进行排序*/
sort(array, low, index - 1);
/*对右边单元进行排序*/
sort(array, index + 1, high);
}
}
}