java排序算法之快速排序

本文详细介绍了快速排序算法的实现原理及步骤。通过递归和分治的思想,选择基准元素,并以此划分数组为两个部分,使左边元素均小于基准,右边元素均大于基准。再递归地对左右两边进行排序,直至只剩单个元素。

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

快速排序的实现:
		/*
		 * 快速排序:思想主要是利用递归和分治。
		 * 先以数组第一个元素为标准,将数组分为两部分,左边的都比标准小,右边的
		 * 都比标准元素大。在不断交换的过程中把标准元素插入到数组的中间位置,
		 * 然后用递归的办法,不断把左右两边细分,直到只剩下最后一个元素即停止。
		 */
	    public static int position(int[]a,int from ,int to){
	    	int i=from;
	    	int j=to;
	    	int init=a[i];
	    	if(i<j){
	    	while(i<j){
	    		while(i<j&&a[j]>=init){
	    			j--;//以第一个元素为标准,先从后面往前面搜寻
	    			    //如果找到一个比标准小的元素就将其替换掉为a[i]
	    		}
	    		a[i]=a[j];//此时需要从前面往后面找,如果找到一个比标准大的
	    		//元素就将其换到刚才a[j]的位置
	    		while(i<j&&a[i]<=init){
	    			i++;
	    		}a[j]=a[i];
	    	}
	    	//当循环结束时,需要把a[0]放到a[i],并返回i
	    	a[i]=init;
	    	
	    }return i;}
	    //然后用递归的办法进行排序,递归的终止条件就是i<j
	    public static void sort(int[]a,int from,int to){
	    	if(from<to){
	    		int mid=position(a,from,to);
	    		sort(a,from,mid-1);
	    		sort(a,mid+1,to);
	    	}
	    }
	    public static void main(String[]args){
	    	int[]sdf={3,4,1,7,4,2,97,23};
	    	sort(sdf,0,7);
	    	for(int ss:sdf){
	    		System.out.println(ss);
	    	}
	    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值