快速排序

来源:互联网 发布:js 点击图片放大 编辑:程序博客网 时间:2024/06/11 15:25

快速排序是选择目前比较流行的一种排序方法(从小到大)

对一些大数据快排有着卓越的优点,它的思想也非常的巧妙

是用递归的方法进行排序。

原理:快速排序以第一个数n作为键值(轴值),将比它小的放在它前面,比它大的放在后面;现在以n为数轴分为2部分

左和右,分别再以左右为单独一组,分别以第一个为键值(轴)进行上面的操作,不难发现,既然是重复操作,不就是递归吗?

程序:

void print(int a[])//打印函数
{
int i;
for(i = 0 ;i < 10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}


int quick_port_local(int a[],int left,int right)
{
int temp = a[left];


while(left < right)
{
while(left < right && a[right] >= temp)//一定要从右开始,否则第一位无法排序
right--;                    //右面一定要比temp大
a[left] = a[right];
while(left < right && a[left] <= temp)
left++;//左面一定要比temp大
a[right] = a[left];

}
a[left] = temp;


return left;


}




void quick_port(int a[],int left,int right)
{
int i;
int local;
if (left < right)
{
local = quick_port_local(a,left,right);
quick_port(a,left,local-1);
quick_port(a,local+1,right);
}






}


int main()
{
int a[10] = {10,1,8,4,5,7,6,3,2,9};
quick_port(a,0,9);//(从小到大排序)
print(a);


    return 0;
}


原创粉丝点击