js 快速排序

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
		window.onload = function (){
			var arr = [34,7,3,11,20,40,13,5];

		function quickSort(arr){

			if(arr.length <= 1){
				return arr;
			}

			var num = arr[Math.ceil(arr.length/2 - 1) ];

			var arrL = [];
			var arrC = arr.splice(num,1);
			var arrR = [];

			for(var i = 0; i < arr.length; i++){
				if(arr[i] < num){
					arrL.push( arr[i] );
				}
				else if( arr[i] > num ){
					arrR.push( arr[i] )
				}else{
					arrC.push(arr[i]);
				}
			}

			return quickSort( arrL ).concat( arrC , quickSort( arrR ) );
		}

		console.log(quickSort( arr ));
			}
	</script>

</head>
<body>

</body>
</html>

  

时间: 2025-01-05 12:47:20

js 快速排序的相关文章

js快速排序方法

function quickSort(arr){ if(arr.length<=1){ return arr; } var arrIndex=Math.floor(arr.length/2); var x=arr.splice(arrIndex,1)[0]; var left=[]; var right=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<x){ left.push(arr[i]); } else{ right.push(arr[i]

js快速排序法

var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) {

js快速排序算法

算法: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. 动画演示: function quickSort(array) { function sort(start, end) { var low = start; var hight = end - 1; var flag = array[start]; if((end-start)<=1) return array // l

js数组冒泡排序,快速排序的原理以及实现

实习了好久,大概用了半年ng2了吧,突然被同事问到js排序问题,一时竟有些懵逼,回来就温故一下,希望自己不忘初心,加油加油! 冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. function sortA(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ //获取第一个值和

快速排序(js版本)

快速排序的时间复杂度为:O(n*log2n),相比较其他O(n2)的排序算法,还是比较有优势的.原文参考在此处,因为本人对原文的一小段代码有点不理解,所以进行了小的修改. 1.基本思想:在数组的第一个或最后一个元素里选择一个,作为基准元素,也称中轴.通过排序,让中轴把数组分为俩部分,一部分比中轴小,一部分大.再用递归法同样的排序俩部分. 2.实例: 3.js代码 var arrayQuick = [7,9,4,8,2,24,54,12,32,11,2]; quick(arrayQuick,0,a

js实现快速排序

js实现快速排序(in-place)简述 快速排序,又称划分交换排序.以分治法为策略实现的快速排序算法. 本文主要要谈的是利用javascript实现in-place思想的快速排序 分治法: 在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.(摘自维基百科) 快速排序的思想 数组中指定一个元素作为标尺,比它大的放到该元素后面,比它小的

js编写快速排序

之前一直学的c语言版的数据结构,所以想尝试一下js版的快速排序,发现更有趣. 其实原理都是大同小异的,下面就来介绍一下原理. 1.首先选一个“基准”,一般选中间值比较合适,因为选两头数据都有可能出现最坏的情况. 2.将数组中的数据与“基准”比较,小于“基准”则存放在另一个数组left(左子集)中,大于“基准”则存放在数组right(右子集)中. 3.利用递归函数,将left和right分别重复1和2,每个数组剩下一个元素为止. 举个栗子: 12 93 60 9 34 46 78 2 30 12

结构-行为-样式-Js排序算法之 快速排序

快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路:    在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放到这个数的左边,依次递归调用直到比较队列中只有两个数. 代码实现: var arrs = [23,85,61,37,55,12,63,11,99,39,70,21,23]; function QuickSort(arr , s,e){ var len = e; var token = arr[s];

JS实现冒泡排序,插入排序和快速排序(从input中获取内容)

以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理,我在这里也不过多叙述了.必要的地方,我在代码里面注释了一下的. 以下是代码: index.html 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Sorting</title> 5 <link re