js——快速排序(quickSort)代码实现

news/2024/5/19 21:47:49 标签: 基准元素, 快速排序, 常用, js

快速排序作为前端排序算法面试的最常考算法之一,是必须要掌握的。现场面试的时候,会要求直接在A4纸上书写出来,不能有犹豫,所以还在等什么呢?

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>快速排序</title>
<!-- 1、快速排序思想:先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。
左右分别用一个空数组去存储比较后的数据,最后递归执行上述操作,直到数组长度小于等于1。
2、特点:快速、常用。缺点是需要另外声明两个数组,浪费了内存空间资源。
3、依赖基准的选取,属于不稳定排序算法。
 -->
</head>
<body>
	
<script type="text/javascript">
	var time=0;
	function sort(arr) {
		// body...
		if(arr.length<=1){
			return arr;
		}

		var pivotIndex=Math.floor(arr.length/2);
		var pivot=arr.splice(pivotIndex,1)[0];//splice()返回的是含有被删除的元素的数组,删除基准数
		//console.log(pivot);
		var left=[];
		var right=[];
		for(var i=0;i<arr.length;i++){
			if(arr[i]<pivot){
				left.push(arr[i]);
			}else{
				right.push(arr[i]);
			}
		}
		return sort(left).concat(pivot,sort(right));
	}

	var arr=[3,1,5,7,2,4,9,6,10,8];
	console.log("beforeSort:"+arr);//beforeSort:3,1,5,7,2,4,9,6,10,8
	console.log("afterSort:"+sort(arr));//afterSort:1,2,3,4,5,6,7,8,9,10
</script>
</body>
</html>

 


http://www.niftyadmin.cn/n/1426084.html

相关文章

**24小时唯一ip计数2

时间知识点 SimpleDateFormat 显示时间形式 simpleDateFormat.format(new Date());取得毫秒数 new Date().getTime();String(时间形式的) 转 dateDate dateformat.parse(Strdate); 表结构 testcount id ip seetime num int nvchar nvchar bigint 原程序count24ip.jsp &l…

js——归并排序(mergeSort)代码实现

归并排序是一种稳定排序&#xff0c;有必要掌握它&#xff1b;以下是详细代码加注释。先看一张归并排序算法对待排序数组的分割&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>归并排序&…

抓弹窗

这种方法可以弹出 <div id"bodyframe" style"VISIBILITY: hidden"> <iframe src"http://127.0.0.1:8081/Ad/count/fshow.jsp?id4" /> </iframe> </div> 这种方法有时候弹不出,不知道怎么回事 <script language…

js——合并两个有序数组详细代码实现

这道题是我在腾讯面试的时候被问到的&#xff0c;当时的回答实在难以令人满意。这道题本来也不难&#xff0c;然后我就一步步尝试性地回答推进&#xff0c;首先&#xff0c;可以直接用数组方法concat&#xff08;&#xff09;&#xff0c;当合并后数组并不关心大小排序时。接下…

每次只展开一组的折叠菜单

<script> function switchMenu(evt){ var eleevt.target||evt.srcElement; //分别针对非ie和ie&#xff0c;获取事件的源对象 if(ele.tagName"H1"){ //如果是<h1> var uluele.parentNode.getElementsByTagName("ul"); for(var i0;i<ulu.le…

js——join() 和 toString()的区别详解

其实是很小的知识点&#xff0c;在刷牛客网算法的时候&#xff0c;自己经常搞错。区别如下 例子&#xff1a; 从上面绿色画笔的地方可以看出来&#xff0c;这两种数组转字符串的方法有细微区别的&#xff0c;要小心。

jsp中刷新servlet验证码

<img alt"看不清楚?点击更换验证码" src"../servlet1" οnclick"this.src../servlet1"/> 修改图片的src属性&#xff0c;给它重新赋值就可以刷新图片, 但是由于缓存的问题&#xff0c;如果两次都是同样的值&#xff0c;浏览器一般都不会…

下拉框控制div显示与隐藏

下拉框控制div显示与隐藏<% page language"java" contentType"text/html; charsetGB2312" import"java.sql.*"%><jsp:useBean id"db" class"com.pp.db.DBOperation"></jsp:useBean><%String path re…