快速排序(java)

本文详细介绍了如何使用Java实现快速排序算法,包括算法的基本思想、步骤和代码实现。通过从右到左寻找小于基准的值,再从左到右寻找大于基准的值,不断交换元素,最终达到分区的效果。然后对左右两个子数组递归调用快速排序,完成整个数组的排序过程。
摘要由CSDN通过智能技术生成

快速排序Java

package test;

import java.util.*;

class Main {
	public static void main(String[] args) {
		int a[] = { 12, 3, 4, 64, 5, 55, 6 };

		quickSort(a, 0, a.length - 1);

		for (int i = 0; i < a.length; i++)
			System.out.print(a[i] + "   ");

	}

	/*
	 * 概述:首先找一个基准(key),将数组里的值与之比较 先从右到左,再从左到右 如此循环 最终由基准将数组分为 左边全部小于右边的两个部分
	 * 
	 * 详细:默认以数组的第一个值为基准,首先从右往左进行比较,找到一个小于基准的值(即a[j]<key 否则j--)然后a[i]=a[j]; 接下来
	 * 从左到右进行比较,找到一个大于基准的值(即a[i]>key 否则i++)然后a[j]=a[i]; 第一组数就交换完毕,如此循环
	 * 直到i==j,就讲数组分为了两部分 而a[i]=key;就是此时的基准 然后再次调用快速排序进行第二轮排序 将数组根据基准 看着两个小数组 重复上述过程
	 * 
	 * 
	 */
	public static void quickSort(int[] a, int low, int high) {
		if (low < high) {
			int i = low, j = high;
			int key = a[i];// 设置上下界和基准,每一次调用默认第一个数是基准

			while (i < j) {
				while (i < j && a[j] >= key) {// 找到一个比key小的值
					j--;
				}

				if (i < j) {
					a[i] = a[j];// 这个小值赋值到左边
				}

				while (i < j && a[i] <= key) {// 找到一个比key大的值
					i++;
				}

				if (i < j) {
					a[j] = a[i];// 这个大值赋值到右边
				}
			}

			a[i] = key;// 此时的i==j key就是该点的值 即,key值应该保存在这个下标内
			quickSort(a, low, i - 1);// 左边部分再次排序
			quickSort(a, i + 1, high);// 右边部分再次排序
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悲灬喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值