常见的排序——交换排序(快速排序递归版)

交换排序交换排序分为快速排序和冒泡排序,就是根据序列中两个值的比较结果来对换这两个数在序列中的位置,特点就是较大值向尾部移动,较小值向前部移动。
快速排序基本思路为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两个子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值。然后采用分治的思想,把一个问题变成两个同样小问题(用递归去解决)。

//进行找基准值,代码如下面的框栏所示。
//进行递归操作
void _QuickSort(int array[], int left, int right)
{
	//分出来的小区间里面有一个值或没有值说明区间内没有数了,递归也就结束了
	if (left >= right){
		return;
	}
	//定义一个基准值
	int div = Parition(array, left, right);
	//进行递归去排序
	_QuickSort(array, left, div - 1);
	_QuickSort(array, div + 1, right);
}
void QuickSort(int array[], int size)
{
	_QuickSort(array, 0, size - 1);
}

找基准值法1:hoare版本:基本思路:先将右边的值作为基准值,用两个指针,第一个开始指向头,第二个指向尾,第一个往右走,第二个往左边走,当第一个遇见比基准值大的停下来,第二个遇见比基准值小的停下来,然后交换两个数。直到两个指针同时指向同一个数,则将其与基准值交换,然后返回这两个指针其中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值