java快速排序算法

本文详细介绍了一种使用递归实现的快速排序算法。通过选取数组中的最后一个元素作为锚点,将数组分为两部分,一部分包含所有小于锚点的元素,另一部分包含所有大于锚点的元素。这种排序方法有效地将数组分割并递归地对子数组进行排序,最终得到完全排序的数组。

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

快速排序算法写法很多种,这里介绍一种简单的:

//递归方式实现快速排序
//算法思想每次排序会把小于锚点的数放在左边,大于锚点的数放在右边,
//排完一轮就找到了锚点的正确位置,然后递归对锚点左侧,和右侧的数组
//进行相同的规则排序
public static void quicksort(int[] array, int start, int end) {
		int leftPos = start;
		int rightPos = end;
        //取最后一个数作为锚点
		int data = array[end];
        //一次排序的运行条件
		while (leftPos < rightPos) {
            //从右侧开始,因为要从大到小排序,所以应该是右侧大于锚点的数是符合规则的,指针一直向左侧移动
			while (leftPos < rightPos && array[rightPos] > data) {
				rightPos--;
			}

			if (array[leftPos] > data) {
				int temp = array[leftPos];
				array[leftPos] = array[rightPos];
				array[rightPos] = temp;
			}

			while (leftPos < rightPos && array[leftPos] < data) {
				leftPos++;
			}
			if (array[rightPos] < data) {
				int temp = array[leftPos];
				array[leftPos] = array[rightPos];
				array[rightPos] = temp;
			}
		}

		if (leftPos > start) {
			quicksort(array, start, leftPos - 1);
		}

		if (rightPos < end) {
			quicksort(array, rightPos + 1, end);
		}
	}
public static void main(String[] args) {
		int[] array = { 9, 1, 3, 7, 2, 4, 6, 110, 22, 5 };
		
		// sort1(array);
		// sort2(array);
		// sort3(array);
		quicksort(array, 0, array.length - 1);

		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
		
	}

1
2
3
4
5
6
7
9
22
110

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值