您的位置:首页 > 其它

排序算法学习- 快速排序

2009-12-01 22:48 232 查看
# include<iostream>
void swap(int *a,int *b)//注意要传地址
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int data[],int start,int end )//最后是 i到 j-1 的都是小于 data[end]
{
int i ,j;
//data[0] = 1000;
for(j = start,i = start;i < end; i ++)
{
if(data[i]<data[end])
{
swap(&data[i],&data[j]);
j++;
}
}
swap(&data[end],&data[j]);
return j;
}
void quicksort(int data[],int start,int end)
{
int mid = 0;
if(start< end)
{
mid = partition(data,start,end);
quicksort(data,start,mid-1);
quicksort(data,mid+1,end);

}
}
void printf(int data[])
{
int len = 10,i ;
for(i = 0;i < len ; i ++)
printf("%d ",data[i]);
}
int main()
{
int data[10] = {10,-232,43422,5,632,72,3,55,12,132};
quicksort(data,0,9);
printf(data);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: