您的位置:首页 > 编程语言 > C语言/C++

排序算法大集锦_交换类——快速排序

2015-05-26 11:57 239 查看
感觉《算法导论》上面的那个例子要更容易理解,因为那个最起码比较直观! 

#include <stdio.h>

int a[10]={2,8,5,7,4,3,1,9,6,10};

void QuickSort(int m, int n)
{
int s,begin,end;
if(m>n)
return;
begin=m;
end=n;

s=a[m];
while(begin!=end)
{
while(a[end]>=s && begin<end)
end--;

while(a[begin]<=s && begin<end)
begin++;

if(begin<end)
{
a[begin]=a[begin]^a[end];
a[end]=a[begin]^a[end];
a[begin]=a[begin]^a[end];
}
}
a[m]=a[begin];
a[begin]=s;

for(int t=0;t<10;t++)
printf("%d ",a[t]);
printf("\n");

QuickSort(m,begin-1);
QuickSort(end+1,n);
}

int main()
{
int i;
for(i=0;i<10;i++)
printf("%d ",a[i]);

printf("\n排序后\n");

QuickSort(0,9);

printf("\n最终结果\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);

printf("\n");

return 0;
}
运行之后

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