JS实现快速排序

本文介绍了快速排序算法的基本思想,通过选取基数进行比较并调整数组元素,使得较小的元素位于数组的一侧,较大的元素位于另一侧。这是一种适用于大规模且随机排列记录的不稳定的排序算法。同时,提供了JavaScript代码来实现快速排序的过程。

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

快速排序是对起泡的一种改进,快速的排序的基本思想就是首先选择一个基数value,然后设置参数i,j。i,j一开始分别指向数组的第一个元素和最后一个元素。然后重复一下的步骤,直到i=j。也就是i和j相遇。

1. 先从j开始以及将数组array[j]的值与value的值进行比较,直到arr[j]<value。这时,交换arr[i]和arr[j]的值,i++;

2. 当交换arr[i]和arr[j]的值之后,这时,我们就需要从i这头开始遍历了,同样的道理,将arr[i]与value比较,直到arr[i]>value。然后交换arr[i]和arr[j]的值,j--;

在快速排序中,记录的移动是从两端向中间进行的,关键码较大的记录一次就能从前面移动到后面,反之亦然。在我们选择了基数,进行记录的划分之后,一般左边的数据小于value的值,右边的数据大于value的值。

快速排序适用于待排序记录个数很大并且原始记录随机排列的情况,并且是一种不稳定的排序算法。

JS代码实现过程:

var arr = [3, 7, 8, 5, 2, 1, 9, 5, 4];
QuickSort(arr);

function QuickSort(arr) {
	function sort(arr, first, last) {
		if (first >= last) {
			return;
		}
		var value = arr[first - 1]; //基数,每次都取第一个记录为基数
		var i = first - 1;
		var j = last - 1;
		while (i < j) {
			for (; i < j; j--) {
				if (arr[j] < value) {
					arr[i++] = arr[j];//当满足条件的时候,交换两数的值,并将i或j相应的++或--
					break;
				}
			}
			for (; i < j; i++) {
				if (arr[i] > value) {
					arr[j--] = arr[i];
					break;
				}
			}
		}
		arr[i] = value;
		sort(arr, first, i);//递归实现左侧排序
		sort(arr, i + 2, last);//递归实现右侧排序
	}
	sort(arr, 1, arr.length);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值