排序算法整理:快速排序

快排模板

public static void quick_sort(int[] arr ,int L,int R) {
	if(L>=R)return;
	int i=L-1,j=R+1;
	int var=arr[L];
	while(i<j) {
		do i++;while(arr[i]<var);
		do j--;while(arr[j]>var);
		if(i<j) {
			int tmp=arr[i];
			arr[i]=arr[j];
			arr[j]=tmp;
		}
	}
	quick_sort(arr,L,j);
	quick_sort(arr,j+1,R);
}

快排的思路
首先一组数据 找一个基准数(这里选用数组的第一位做基准数据)
之后i从前往后扫,找到一个大于(或等于)基准数据的数
j从后往前扫,找到一个一个小于(或等于)基准数据的数
之后将这两个数位置交换
这样
比基准数小的(或者相等的)就跑到了基准数的左边
比基准数大的(或者相等的)就跑到了基准数的右边
然后 数组分成了两部分 前一部分,和后一部分,
然后再一次排左右,最终 整个数组排序完成

时间复杂度,
平均 O ( n l o g n ) O(nlogn) O(nlogn) 最差 O ( n 2 ) O(n^2) O(n2)
空间
O ( l o g n ) O(log_n) O(logn)

是不是感觉相等的有点别扭
因为我在学习的过程中也发现了这个问题
比如遇到 222222222 这种数组 快排就退化严重 当然 后面有其他排序方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值