java实现快速排序算法

7 篇文章 0 订阅
本文详细介绍了Java实现快速排序的方法,包括算法原理及代码实现。通过一个具体的例子展示了如何对整型数组进行排序,并提供了详细的注释解释每一步操作。此外,还探讨了快速排序的空间复杂度。博客中提供的代码示例清晰地展示了快速排序的过程,便于读者理解和学习。
摘要由CSDN通过智能技术生成

可以去我的博客看详细解析与简单易懂的原理:
振云博客:http://zhenyunboy.icu/?p=382

java编程源码展示:

public class fast {
	public static void main(String[] args) {
		int a[] = { 1, 5, 9, 6, 8, 2, 3, 7, 10 };
		que(a, 0, a.length - 1);
		for (int i : a) {
			System.out.print(i + " ");
		}
	}

	/**
	 * 快速排序 空间复杂度也为O(logn) O (nlogn)
	 */
	public static void que(int array[], int left, int righ) {
	//如果传入进来的左参数left(从左往右数第一个)大于右参数righ(最后一个)
	//在这里就直接返回
		if (left > righ) {
			return;
		}
		// 定义一个基本数,也就是接下来要和每一个参数对比的基本元素
		int base = array[left];
		//定义初始化i的位置,也就是从哪里开始向右移动
		int i = left;
		//定义初始化j的位置,也就是从哪里开始向左边移动
		int j = righ;
		// i和j移动,
		// i向右移动找出数组元素大于基本数base,j向左边移动数组元素小于基本数base,直到相等循环停止
		//在i和j移动的过程中没有相遇时就一直循环,直到相遇为止
		while (i != j) {
			// j向左边移动,只有当元素大于等于基本数,j才左移
			while (array[j] >= base && i < j) {
			//j从右边向左边移动
				j--;
			}
			// i向右移,只有当元素小于等于基本数,i才右移
			while (array[i] <= base && i < j) {
			//i从左边向右边移动
				i++;
			}
			// 当移动停止说明找到了该元素,就交换位置
			int temp = 0;
			//将下标为i的元素给temp中间值
			temp = array[i];
			//将下标为j的元素给下标为i的位置,注意此时i位置是空值
			array[i] = array[j];
			//将中间值赋值给下标为j的位置,也就是将i位置的值与j位置的值互换
			array[j] = temp;
		}
		// 当i和j第一次相遇就说明快速排序第一次完成
		// 就将最左边的基本数和当前ij相遇位置的元素交换
		// *********************************************************
		//相遇一次后此时i=j所处位置一样,该位置的值要给到最左边位置上,也就是
		//将i或j位置上的值给到首位置上
		array[left] = array[i];
		//再将基本值,也就是全程与之比较的值给到i或者j的位置
		array[i] = base;
		// *********************************************************
		// 到这里后base左边元素全部小于base,右边全部大于base;
		// 所有左边再次排序,递归
		que(array, left, i - 1);
		// 右边再次排序,递归
		que(array, i + 1, righ);
	}

}

在这里插入图片描述

https://www.bilibili.com/video/BV1it41167v2?from=search&seid=8723510032926362054

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值