Java 快速排序 整理知识点

1.什么是排序?
排序是按照某种顺序(升序或者降序)排列序列元素的一种算法。
2.为什么需要排序?
排序是计算机科学中的重要算法,排序有时候可以显著降低问题的复杂度,可以使用排序作为减少查找复杂度的一种技术。鉴于排序的重要性,已有针对排序算法的大量研究并将其用于多种计算机算法(例如:查找元素)、数据库算法和其他的算法中。
3.快速排序
快速排序(quicksort)是分治算法技术的一个实例,也称为分区交换排序。快速排序采用递归调用对元素进行排序,是基于比较的排序算法中的一个著名算法。
划分:数组A[0…n]被分成A[0,…,mid] 和 A[mid+1 ,…,n],使得分开的两个数组,前者的元素全部小于后者的元素,然后再划分的过程中不断的计算key的索引位置。
分而治之:对第一遍区分出来的数组进行递归快速排序。
算法思路:
1)如果数组中仅有一个元素或者没有元素需要排序,则返回。
2)选择数组中的一个元素作为key(通常是第一个元素)。
3)先进行第一次排序,然后分成两部分:一部分大于key,一部分小于key。
4)对这两部分使用递归,调用该算法。
源码如下:

public static int[] quickSort(int[] arr, int low, int hight) {

		if (low > hight) {
			return arr;
		}
		int left = low, right = hight, key = arr[low]; // 初始化变量
		while (left < right) {

			while (left < right && key < arr[right]) {
				right--;
			}
			while (left < right && key >= arr[left]) {
				left++;
			}
			if (left < right) {
				int temp = arr[left];
				arr[left] = arr[right];
				arr[right] = temp;
			}
		}
		int temp = arr[right];
		arr[right] = arr[low];
		arr[low] = temp;

		quickSort(arr, low, right - 1);

		quickSort(arr, right + 1, hight);

		return null;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值