快排 quicksort 快速排序
首先看这个
http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html
看完后就没有什么不理解的了...
PS
注意 凡是在一趟比较中l 或者 r的值改变了
都需要检测一下 l 是否还是 满足 l < r
function quick(arr, start, end) {
if (start < end) {
var l = start;
var r = end;
var tmp = arr[l];
while (l < r) {
while (l < r && arr[r] > tmp) r--;
if (l < r) {
arr[l] = arr[r];
l++; //l这个坑已经填好了 那么下次从左边数应该从这个坑后面的位置开始 //所以是l++ 而不是 r--
}
console.log('r' + arr);
while (l < r && arr[l] < tmp) l++;
if (l < r) {
arr[r] = arr[l];
r--;
}
console.log('l' + arr);
}
arr[l] = tmp;
console.log(arr);
quick(arr, start, l - 1);
quick(arr, l + 1, end);
}
}
arr = [23,12,54,67,34,88];
quick(arr,0 ,arr.length-1);
console.log();
快排 quicksort 快速排序的更多相关文章
- 快排 - 快速排序算法 (Chinar出品 简单易懂)
Quicksort 快排的简单讲解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- 快速排序详解(lomuto划分快排,hoare划分快排,classic经典快排,dualpivot双轴快排源码)
目录 快速排序(lomuto划分快排,hoare划分快排,classic经典快排,dualpivot双轴快排) 一.快速排序思想 二.划分思想 三.测试用例 快速排序(lomuto划分快排,hoare ...
- 快排 快速排序 qsort quicksort C语言
现在网上搜到的快排和我以前打的不太一样,感觉有点复杂,我用的快排是FreePascal里/demo/text/qsort.pp的风格,感觉特别简洁. #include<stdio.h> # ...
- 快速排序c++实现 快排C++代码实现
快速排序c++实现 快排C++ 第一.算法描述 快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法, 快速排序算法是采用分治思想的算法,算法分 ...
- 63.如何对单链表进行快排?和数组快排的分析与对比[quicksort of array and linked list]
[本文链接] http://www.cnblogs.com/hellogiser/p/quick-sort-of-array-and-linked-list.html [题目] 单链表的特点是:单向. ...
- javascript高级排序算法之快速排序(快排)
javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...
- 快速排序—三路快排 vs 双基准
快速排序被公认为是本世纪最重要的算法之一,这已经不是什么新闻了.对很多语言来说是实际系统排序,包括在Java中的Arrays.sort. 那么快速排序有什么新进展呢? 好吧,就像我刚才提到的那样(Ja ...
- 快速排序 java实现 (原理-优化) 三路快排
一.基本的快速排序 在数组中选取一个元素为基点,然后想办法把这个基点元素移动到它在排好序后的最终位置,使得新数组中在这个基点之前的元素都小于这个基点,而之后的元素都大于这个基点,然后再对前后两部分数组 ...
- 快排算法Java版-每次以最左边的值为基准值手写QuickSort
如题 手写一份快排算法. 注意, 两边双向找值的时候, 先从最右边起找严格小于基准值的值,再从最左边查找严格大于基准base的值; 并且先右后左的顺序不能反!!这个bug改了好久,233~ https ...
随机推荐
- TSQL 根据经纬度计算两点间的距离;返回米(m)
-- ============================================= -- Author:Forrest -- Create date: 2013-07-16 -- Des ...
- 剑指offier77页
/* * 输入字母判断第几列 */ import java.util.Scanner; public class JudgeClumns { public static void main(Strin ...
- c 陷阱与缺陷(一)
1.程序在设计时,往往得出正确的结果,但是它并不是程序员自己想要的. 例如: printf("hello world!") 编译器进行编译时不会出现任何问题,但是结果: 提示竟然出 ...
- jQuery简单前端表单验证
<!DOCTYPE html> <html> <head> <title>表单验证</title> <script src=" ...
- style-11bak
<resources> <style name="FullscreenTheme" parent="android:Theme.Holo"&g ...
- stack的应用
STL除了给我们提供了一些容器(container)以外,还给我们提供了几个容器适配器(container adapters),stack便是其中之一 看过STL源码的人都知道,stack其实是内部封 ...
- VM 映像 PowerShell 教学系列博客文章
编辑人员注释:本文章是与Microsoft Azure工程的项目经理Kay Singh共同撰写的 正如我在第一篇博客文章中所承诺的,我又回来了,为大家分步介绍如何在PowerShell中使用VM ...
- 群星云集 BOSS上海时装秀—情沪魅影- 在线观看 - 乐视网
群星云集 BOSS上海时装秀-情沪魅影- 在线观看 - 乐视网 群星云集 BOSS上海时装秀-情沪魅影
- City Game(动态规划)
City Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Java-----Excel转HTML
尽管是转别人的(忘了哪转过来的了),但此处标为原创不是为了提高訪问量,也不是为了其它.仅仅是纯粹的认为有实际用途.希望能给很多其它有此需求的人看到并能帮到他们就足够了 所需jar包:jxl.jar p ...