Java快速排序-学习笔记1

效率可观的快速排序实现代码:

 

 

import java.util.Arrays;

public class QuickSort2 {

	public static void main(String[] args) {

		int size = 5000;
		int[] array = new int[size];
		int[] array2 = new int[size];
		for (int j = 0; j < size; j++) {
			int r = (int) (Math.random() * 1000);
			array[j] = r;
			array2[j] = r;
		}

		long s1 = System.currentTimeMillis();
		Arrays.sort(array);
		for (int i : array) {
			System.out.print(i + "\t");
		}
		long e1 = System.currentTimeMillis();

		System.out.println("");

		long s2 = System.currentTimeMillis();
		QuickSort2.quickSort(array2, 0, array2.length - 1);
		for (int i : array2) {
			System.out.print(i + "\t");
		}
		long e2 = System.currentTimeMillis();

		System.out.println("");
		System.out.println((e1 - s1) + "-----" + (e2 - s2));
	}

	public static int partition(int[] arr, int low, int high) {
		int key = arr[low];
		while (low < high) {
			while (low < high && arr[high] >= key) {
				--high;// 从右向左搜索
			}
			arr[low] = arr[high];

			while (low < high && arr[low] <= key) {
				++low;// 从左向右搜索
			}
			arr[high] = arr[low];
		}
		arr[low] = key;
		return low;
	}

	public static void quickSort(int[] arr, int start, int end) {
		if (start <= end - 1) {
			int loc = partition(arr, start, end);// 对原数据进行一次划分
			quickSort(arr, start, loc - 1);// 从右往左搜索排序
			quickSort(arr, loc + 1, end);// 从左往右搜索排序
		}
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值