您的位置:首页 > 产品设计 > UI/UE

排序算法之快速排序(QuickSort)

2011-08-05 20:29 330 查看
快速排序又称分区交换排序,是目前已知的平均速度最快的一种排序算法,它是对冒泡排序的一种改进。该算法的基本思想是:从待排序的n个记录中任意选取一个记录R(通常是序列中的第一个元素)作标准,调整序列中各个记录的位置,使R前面的记录的关键字都比它小,后面的关键字都比它大,这样的一个过程称为一次快速排序。然后对两边的记录再同样分别进行这样一个过程,直到各个子序列的长度为1时,排序完毕。

算法如下:

#include "stdafx.h"

void QuickSort(int a[],int low,int high)
{

int k=low;//保存当前空位
int i=low,j=high;
int key=a[low];

while(i<j)
{

while(i<j)
{
if(a[j]<key)
{
a[k]=a[j];
k=j;
break;
}
j--;
}

while(i<j)
{
if(a[i]>key)
{
a[k]=a[i];
k=i;
break;
}
i++;
}
}

a[k]=key;

if(low<k-1) QuickSort(a,low,k-1);
if(high>k+1) QuickSort(a,k+1,high);
}

int _tmain(int argc, _TCHAR* argv[])
{
int a[]={21,56,23,90,25,76,19,44,98,8,77,0};
QuickSort(a,0,11);
for(int i=0;i<12;i++)
{
printf("%d,",a[i]);
}
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: