快速排序javascript

本文介绍了冒泡排序的基本原理及其O(n²)的时间复杂度,并详细解析了快速排序的算法思想,包括如何选择基准值及递归过程。通过示例展示了使用JavaScript实现快速排序的方法。

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

         首先要介绍一下冒泡排序,冒泡排序的过程很简单,首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个关键字交换,然后比较第二个和第三个,直到最后一个比较完成。这是第一趟冒泡,其结果使得关键字最大的记录被安置到最后一个位置上了。然后对序列前n-1个元素进行第二次冒泡,将倒数第二个选出。以此类推直到所有被选出,冒泡结束。

         通过分析可以得出,冒泡排序的时间复杂度为O(n2)。

         快速排序是对冒泡排序的一种改进,它是处理大数据集最快的排序之一,通过递归的方式将数据依次分解为包含较小元素和较大元素的不同子序列,不断重复该过程直到所有数据都是有序的。这个算法首先要选择一个基准值,围绕基准值进行。

         示例如下:


         算法思想如下:

         选择一个基准元素,将列表分为两个子序列;

         对列表重新排序,将所有小于基准元素的元素放前面,大的放后面;

         分别对较小元素的子序列和较大元素的子序列重复上面两个步骤。

         我们通过js实现代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<script type="text/javascript">
	function qSort(nums) {//快速排序
		if(nums.length==0){
			return [];
		}
		var lesser=[];
		var greater=[];
		var pivot=nums[0];//选择基准元素
		for(var i=1;i<nums.length;i++){
			if(nums[i]<pivot){//分成两个之序列
				lesser.push(nums[i]);
			}else{
				greater.push(nums[i]);
			}
		}
		return qSort(lesser).concat(pivot,qSort(greater));//递归
	}
	function show(nums){//显示数组
		for(var i=0;i<nums.length;i++){
			document.write(nums[i]+' ');
		}
		document.write('<br>');
	}	
	var nums=[68,80,12,80,95,70,79,27,88,93];
	show(nums);//newNums
	var newNums=qSort(nums);//希尔排序
	show(newNums);//0 0 2 3 4 5 5 6 8 9	
</script>	
</body>
</html>

         就平均时间而言,快速排序是目前被认为最好的一种内部排序方法。快速排序非常适用于大型数据集合,在处理小数据集时性能反而会下降。其时间复杂度为O(nlog2n



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布瑞泽的童话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值