Java实现快速排序

/**
 * @项目名称 :test
 * @文件名称 :QuickSort.java
 * @所在包 :
 * @功能描述 :
 * 快速排序Java实现
 * @创建者 :云守护 542335496@qq.com
 * @创建日期 :Nov 14, 2012
 * @修改记录 :
 */
public class QuickSort {
	/** 主方法 */
	public static void main(String[] args) {
		// 声明数组
		int[] nums = { 27, 8, 57, 9, 23, 41, 65, 19, 0, 1, 2, 4, 5 };
		// 应用快速排序方法
		quickSort(nums, 0, nums.length - 1);
		// 显示排序后的数组
		for (int i = 0; i < nums.length; ++i) {
			System.out.print(nums[i] + ",");
		}
		System.out.println();
	}

	/** 快速排序方法 */
	public static void quickSort(int[] a, int lo0, int hi0) {
		int lo = lo0; // 相当于i,左
		int hi = hi0; // 相当于j, 右

		if (lo >= hi) // 判断是否到中间了
			return;

		// 确定指针方向的逻辑变量,也就是从左搜索还是向右搜索
		boolean transfer = true;

		while (lo != hi) {
			if (a[lo] > a[hi]) {
				// 交换数字
				int temp = a[lo];
				a[lo] = a[hi];
				a[hi] = temp;
				// 决定下标移动,还是上标移动
				transfer = (transfer == true) ? false : true;
			}

			// 将指针向前或者向后移动
			if (transfer)
				hi--;
			else
				lo++;
		}

		// 将数组分开两半,确定每个数字的正确位置
		lo--;
		hi++;
		quickSort(a, lo0, lo);
		quickSort(a, hi, hi0);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值