快速排序法

快速排序法介绍

快速排序基本思想:

选择一个基准数,通过一趟排序将要排序的数据分割成独立的两个部分;其中一部分的所有数据都比另一部分的所有数据要小。然后,再按此方法对这两部分数据分别进行快速排序,整个过程可以递归进行,以此达到整个数据变成有序序列。

快速排序流程:
  • 从数列中挑出一个基准值;
  • 将所有比基准数晓得摆放在基准数前面,所有比基准数大的摆放在基准数的后面(相同的数可以放到任意一边);在这个分区退出后,该基准就处于数列的中间位置;
  • 递归地把“基准值前面的子数列”和“基准后面的子数列”进行排序。
快速排序代码:
void quick_sort(int a[],int l,int r)
{
	if(l<r){
		int i,j,x;
		i = l;
		j = r;
		x = a[i];
		while (i<j){
			while(i<j && a[j]>x)
			j--;   //从右向左找第一个小于x的数
			if(i<j)
			a[i++] = a[j];
			while(i<j && a[i]<x)
			i++;  //从左向右找第一个大于x的数
			if(i<j)
			a[i--] = a[i]; 
		}
		a[i] = x;
		quick_sort(a,l,i-1);  //递归调用
		quick_sort(a,i+l,r);  //递归调用
	}
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值