30.排序--快速排序

排序也是我们经常用到的一种算法,之前我们遇到的有冒泡排序,选择排序等。

那么我们就开始主要梳理一下排序算法,并且重点理解出现频率比较高的快速排序的方法。

推荐看这个人的博客,非常的详细了。

https://blog.csdn.net/qq_38821502/article/details/101385728

 

快速排序:

适用场景:
数据量大,快速排序是目前基于比较的排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

 

它到底是怎么排的啊?

int quick_sort(int *data, int low, int high) {
	int t;

	if (data == NULL) {
		return -1;
	}

	if (low >= high)
		return 0;

	t = partion(data, low, high); //将一个大问题差分成几个小问题,先找到中轴
	quick_sort(data, low, t-1);//递归左半部分
	quick_sort(data, t+1, high);//递归右半部分

	return 0;
}
//核心操作,找到中轴位置
int partion(int *data, int low, int high) {
	int temp = data[low];

	while (low < high) {
		while (low < high && temp <= data[high]) {
			high--;
		}
		data[low] = data[high];

		while (low < high && temp >= data[low]){
			low++;
		}
		data[high] = data[low];
	}

	data[low] = temp;

	return low;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值