我是靠谱客的博主 真实钢笔,最近开发中收集的这篇文章主要介绍java排序算法之快速排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

快速排序原理:快速排序实际上是采用二分法和递归的思想来实现数组排序。第一步是使用数组第一个数作为参考数,将数组按照大于或小于参考数分为两部分,再采用递归的方式对两部分进行同样操作,直到被拆分的部分只有一个数。

假设数组:5,8,7,3,6,2,9,1,4。采用快速排序算法的流程如下:

第一步:将第一个数5作为参考,将5从最后一位数开始逆序进行比较,直到找到小于5的数,交换两者位置,当比较到倒数第二位数,此时5大于1,交换位置。

接下来,从1开始找出大于5的元素,交换5与8的位置。

再从5与8之间找到小于5的数,交换位置,直到5的左边全部小于5,右边全部大于5。如下:

此时,已完成了5的排序,5的位置将不再变化。之后再用同样方式对5前面部分和后面部分进行操作。

以前面部分为例:对1,2,4,3进行排序。

由于1小于其他数,那么再次进行递归操作,对2,4,3进行排序,直到完成4,3排序。那么,前面部分的排序也就完成了。

实现代码:

public static int[] sort(int arr[], int start, int end) {
		int pivot = arr[start];
		int i = start;
		int j = end;
		while (i < j) {
			while ((i < j) && (arr[j] > pivot)) {
				j--;
			}
			while ((i < j) && (arr[i] < pivot)) {
				i++;
			}
			if ((arr[i] == arr[j]) && (i < j)) {
				i++;
			} else {
				int temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
		if (i - 1 > start)
			arr = sort(arr, start, i - 1);
		if (j + 1 < end)
			arr = sort(arr, j + 1, end);
		return arr;
	}

测试:

public static void main(String[] args) {
		int[] arr = new int[] {5,8,7,3,4,2,9,1,6};
		arr = sort(arr, 0, arr.length - 1);
		for(int i : arr) {
			System.out.println(i);
		}
	}

输出结果:

 

最后

以上就是真实钢笔为你收集整理的java排序算法之快速排序的全部内容,希望文章能够帮你解决java排序算法之快速排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部