十大排序算法之快速排序

本文介绍了快速排序算法,这是一种基于分治思想的排序方法。通过选取基准值,将序列分割为两部分,一部分值小于基准,另一部分值大于基准,然后对这两部分递归进行相同操作,直至整个序列有序。提供的Java代码展示了快速排序的实现过程,包括划分序列和递归排序的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序

思路:
快速排序算法用到了分治的思想,通过一轮的排序,可以将序列分割成独立的两个部分,其中一部分的值<基准值,另一部分的值>基准值。而后针对两部分再按照同样的算法进行排序,直到序列整体有序。

public class QuickSort{

	public static void quickSort(int[] arr,int low,int high){
		if(low<high){
			int index=getIndex(arr,low,high); // 找基准数据的正确索引
			quickSort(arr,low,index-1);
			quickSort(arr,index+1,high);
		}
	}
	
	public static int getIndex(int[] arr,int low,int high){
		int base=arr[low]; // 基准数据
		while(low<high){
			while(low<high && arr[high]>=base){	//若arr[high]<=base就是降序
			high--;
			}
			arr[low]=arr[high];	// 如果队尾元素小于tmp,需要将其赋值给low
			while(low<high && arr[low]<=base){
				low++;
			}
			arr[high]=arr[low];	// 当队首元素大于tmp时,需要将其赋值给high
		}
		arr[low]=base;	//还原正确的值
		return low;		// 返回排序后base的下标
	}
	
}

测试一下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值