真正的快速排序算法一:

function quickSort(array){
function sort(prev, numsize){
var nonius = prev;
var j = numsize -1;
var flag = array[prev];
if ((numsize - prev) > 1) {
while(nonius < j){
for(; nonius < j; j--){
if (array[j] < flag) {
array[nonius++] = array[j]; //a[i] = a[j]; i += 1;
break;
};
}
for( ; nonius < j; nonius++){
if (array[nonius] > flag){
array[j--] = array[nonius];
break;
}
}
}
array[nonius] = flag;
sort(0, nonius);
sort(nonius + 1, numsize);
}
}
sort(0, array.length);
return array;
}
console.log(quickSort([23,11,89,45,67,76,56,99]))
快速排序算法二:

function swap(items, firstIndex, secondIndex){
var temp = items[firstIndex];
items[firstIndex] = items[secondIndex];
items[secondIndex] = temp;
} function partition(items, left, right) { var pivot = items[Math.floor((right + left) / 2)],
i = left,
j = right; while (i <= j) { while (items[i] < pivot) {
i++;
} while (items[j] > pivot) {
j--;
} if (i <= j) {
swap(items, i, j);
i++;
j--;
}
} return i;
} function quickSort(items, left, right) { var index; if (items.length > 1) { left = typeof left != "number" ? 0 : left;
right = typeof right != "number" ? items.length - 1 : right; index = partition(items, left, right); if (left < index - 1) {
quickSort(items, left, index - 1);
} if (index < right) {
quickSort(items, index, right);
} } return items;
} var items = [4, 2, 6, 5, 3, 9];
// first call
var result = quickSort(items);
var result2 = quickSort(items, 0, items.length - 1);
快速排序算法三:

"快速排序"的思想很简单,整个排序过程只需要三步:
(1)在数据集之中,选择一个元素作为"基准"(pivot)。   (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。   (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 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) {       left.push(arr[i]);     } else {       right.push(arr[i]);     }   }   return quickSort(left).concat([pivot], quickSort(right)); };
console.log(quickSort([23,11,89,45,67,76,56,99]))

  

js快速排序算法的更多相关文章

  1. js快速排序算法解析

    数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...

  2. js 快速排序算法

    Array.prototype.quickSort = function() { var len = this.length; if(len < 2) return this; var left ...

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

    快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路:    在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放 ...

  4. js排序算法05——快速排序

    终于到了传说中的快速排序算法了,快速排序的思想和归并排序一样,都是采用分治思想,不同之处在于归并每次将数组一分为二,最后将小的数组进行比较,合并为大数组.快排是每次找一个主元,也就是基准数,按照这个基 ...

  5. Learn Algorithms With Javascript - 基于 Js 进行算法学习

    基于 javascript 学习并实现常用的经典算法,欢迎对算法和数学感兴趣的 Js 开发者参与,一起学习共同进步. 算法实现 排序 插入排序 sort/lib/insertion-sort.js 希 ...

  6. Js常见算法实现汇总

    /*去重*/ <script> function delRepeat(arr){ var newArray=new Array(); var len=arr.length; for(var ...

  7. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  8. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

  9. C# 集合扩展快速排序算法

    /// <summary> /// 对集合进行排序,如 /// List<Person> users=new List<Person>(){.......} /// ...

随机推荐

  1. Xamarin Essentials教程构建共享请求

    Xamarin Essentials教程构建共享请求 共享请求类ShareTextRequest可以用于构建复杂形式的数据,用于向其他应用传输.例如,它可以指定共享内容的主题Subject,用于给邮件 ...

  2. 谷歌浏览器把网页打印成pdf

    一.认识markdown mweb for mac2.2.7 激活版 二.pdf和word pdf的可移植性比较好,在不同的操作系统中都能打开,而且安全,但是可编辑性不好,所以通常用markdown编 ...

  3. 实现左边div固定宽度,右边div自适应撑满剩下的宽度的布局方式:

    html: <div class="container"> <div class="left"> left固定宽度200px </ ...

  4. SolidWorks基础-快速入门

    SolidWorks 介绍 SolidWorks 是一款机械设计自动化软件包 用于设计与分析机械结构 SolidWorks主要是工程师表达自己思想的工具 学习 SolidWorks 的方法 找一个基础 ...

  5. java 实验 三 (2)(3)

    (2)编写一个Java程序,声明一个数组,各元素如:{12, 23, 456, 222, 768, 93245}计算出所有元素的和以及所有元素的平均值:SumArray.java(3)编写一个Java ...

  6. 免花生壳 TCP测试 DTU测试 GPRS测试TCP服务器

    通常在学习GPRS或者DTU的时候,往往没有自己的服务器,很多时候我们只能用这个模块打个电话发个短信,但是随着移动互联的兴起,各行各业大家都开始弄移动接入.为了这个需求,这里提供TCP移动接入. 工作 ...

  7. 潭州课堂25班:Ph201805201 django 项目 第二十九课 docker实例,文件下载前后台实现 (课堂笔记)

    docker 实例 :wq!保存退出 放入一个 html 文件 权限不够,加 sudo 查看本地仓库的 image 运行 docker -- name,后跟个运行名, -p 物理机端口映射到容器端口, ...

  8. Markdown指南

    Markdown 指南 前几天学习了markdown,然后一直在用,很喜欢这种格式即内容的写作形式.在简书写了几篇,对固定链接的格式很不满意,于是寻找能够支持markdown.固定链接显格式.支持自定 ...

  9. 设置 IntelliJ IDEA 智能提醒时忽略大小写

    1.Ctrl + Alt + S 打开设置界面(或者从菜单File - settings 进来) 2.在搜索框输入Completion定位到Code Completion功能项 3.在右侧配置界面选中 ...

  10. [jzoj]1729.blockenemy

    Link https://jzoj.net/senior/#main/show/1729 Description 你在玩电子游戏的时候遇到了麻烦...... 你玩的游戏是在一个虚拟的城市里进行,这个城 ...