【算法】程序猿不写代码是不对的17

本文介绍了一种快速排序算法的具体实现过程。通过递归的方式,在数组中选择一个基准元素,并将数组分为两部分:一部分包含小于基准的所有元素,另一部分包含大于基准的所有元素。此过程不断重复,直至整个数组按升序排列。

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

package com.kingdz.algorithm.time201702;

import java.util.Arrays;

/**
 * 快速排序
 * 
 * @author kingdz
 * 
 */
public class Algo15 {

	public static void main(String[] args) {
		int count = 10;
		int[] number = new int[count];
		number = Algo13.fillArray(count, false);
		System.out.println(Arrays.toString(number));
		number = quicksort(number, 0, number.length - 1);
	}

	private static int[] quicksort(int[] number, int start, int end) {
		if (start < end) {
			int index = diversion(number, start, end);
			quicksort(number, start, index - 1);
			quicksort(number, index + 1, end);
		}
		return number;
	}

	/**
	 * 分割函数
	 * 
	 * @param arr
	 *            数组
	 * @param start
	 *            起始位置
	 * @param end
	 *            结束位置
	 * @return
	 */
	private static int diversion(int[] arr, int start, int end) {
		int base = arr[start];
		int left = start;
		int right = end;
		while (left < right) {
			while (left < right && arr[right] > base) {
				right--;
			}
			if (left < right) {
				// 此次交换后所有base右边都比base大
				Algo13.swap(arr, left, right);
			}
			while (left < right && arr[left] < base) {
				left++;
			}
			if (left < right) {
				// 此次交换后所有base左边都比base小
				Algo13.swap(arr, left, right);
			}
		}
		System.out.println(Arrays.toString(arr));
		return left;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值