Partition算法及Partition算法用于快速排序
JavaScript简单方便,所以用JavaScript实现,可以在Chrome控制台下观察运行结果。主要实现Partition算法,比如输入为
var array = [4, 2, 1, 3, 6, 8, 9, 7, 5];
partition(array, 0, 8);
那么按照array[0]即4进行划分,结果为 [3, 2, 1, 4, 6, 8, 9, 7, 5] .
1. [代码][JavaScript]代码
// 先来看Partition算法,Partition算法是快速排序的基础
<script type="text/javascript">
// 划分算法
function partition(array, p, r) {
if(p < 0 || r < 0 || p >= r || r > array.length-1)
return;
var i = p;
var pivot = array[i];
for(var j = p+1; j <= r; j++) {
if(array[j] < pivot) {
i++;
var temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
// 交换array[i]和array[p]
var temp = array[p];
array[p] = array[i];
array[i] = temp;
return i;
}
var array = [4, 2, 1, 3, 6, 8, 9, 7, 5];
partition(array, 0, 8);
console.log(array);
</script>
2. [代码][JavaScript]代码
// 基于上面的Partition算法,获得下面的快速排序算法
<script type="text/javascript">
// 划分算法
function partition(array, p, r) {
if(p < 0 || r < 0 || p >= r || r > array.length-1)
return;http://www.huiyi8.com/clxgt/
var i = p;窗帘效果图
var pivot = array[i];
for(var j = p+1; j <= r; j++) {
if(array[j] < pivot) {
i++;
var temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
// 交换array[i]和array[p]
var temp = array[p];
array[p] = array[i];
array[i] = temp;
return i;
}
function quickSort(array, p, q) {
if(p > q || p < 0 || q < 0 || q > array.length-1)
return;
if(p==q) // 递归终止条件
return;
var mid = partition(array, p, q);
quickSort(array, p, mid-1);
quickSort(array, mid+1, q);
}
var array = [4, 2, 1, 3, 6, 8, 9, 7, 5];
quickSort(array, 0, 8);
console.dir(array);
</script>
Partition算法及Partition算法用于快速排序的更多相关文章
- JavaScript 数据结构与算法之美 - 归并排序、快速排序、希尔排序、堆排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
- java排序算法(五):快速排序
java排序算法(五):快速排序 快速排序是一个速度非常快的交换排序算法,它的基本思路很简单,从待排的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的元素放到左边.所有比它大的元素放到右 ...
- javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法)
javascript数据结构与算法--高级排序算法(快速排序法,希尔排序法) 一.快速排序算法 /* * 这个函数首先检查数组的长度是否为0.如果是,那么这个数组就不需要任何排序,函数直接返回. * ...
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- neat算法——本质就是遗传算法用于神经网络的自动构建
基于NEAT算法的马里奥AI实现 所谓NEAT算法即通过增强拓扑的进化神经网络(Evolving Neural Networks through Augmenting Topologies),算法不同 ...
- 在Object-C中学习数据结构与算法之排序算法
笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...
- Peterson算法与Dekker算法解析
进来Bear正在学习巩固并行的基础知识,所以写下这篇基础的有关并行算法的文章. 在讲述两个算法之前,需要明确一些概念性的问题, Race Condition(竞争条件),Situations lik ...
- 面试常用算法总结——排序算法(java版)
排序算法 重要性不言而喻,很多算法问题往往选择一个好的排序算法往往问题可以迎刃而解 1.冒泡算法 冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个 ...
- Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦
Machine Learning读书会,面试&算法讲座,算法公开课,创业活动,算法班集锦 近期活动: 2014年9月3日,第8次西安面试&算法讲座视频 + PPT 的下载地址:http ...
随机推荐
- Android-TextView属性ellipsize多行失效的解决思路
多余文字显示省略号的常规做法 android:ellipsize="end" //省略号显示在末尾 android:ellipsize="middle" //省 ...
- hadoop之hdfs及其工作原理
hadoop之hdfs及其工作原理 (一)hdfs产生的背景 随着数据量的不断增大和增长速度的不断加快,一台机器上已经容纳不下,因此就需要放到更多的机器中,但这样做不方便维护和管理,因此需要一种文件系 ...
- DELPHI10.2的LINUX数据库开发环境配置
DELPHI10.2的LINUX数据库开发环境配置 ubuntu使用firedac访问mysql1.安装mysql-client包sudo apt-get install mysql-client m ...
- Android减少布局层次--有关Activity根视图DecorView的思考
1 Android应用图层 一直觉得有关DecorView还是有些问题没有搞清楚,今天在看了一点有关SurfaceFlinger的内容以后,顿时突发奇想,想到之前的问题,之前的思考是: 虽然可以将De ...
- Python 自动登录网站(处理Cookie)
http://digiter.iteye.com/blog/1300884 Python代码 def login(): cj = cookielib.CookieJar() ope ...
- Spring源代码由浅入深系列三 refresh
Spring中的refresh是一个相当重要的方法. 它完毕IOC的第一个阶段,将xml中的bean转化为beanDefinition.具体说明如上图所看到的. 在上图中,创建obtainFreshB ...
- vue2.0 + vux (一)Header 组件
1.main.js import Vue from 'vue' import FastClick from 'fastclick' import VueRouter from 'vue-router' ...
- windows程序设计——飞机大战笔记(Access数据库的使用)
//////////////////2015/07/22/////////////////// /////////////////by xbw ///////////////////////// // ...
- 解决"Subquery returns more than 1 row"sql查询错误
http://blog.csdn.net/c517984604/article/details/7052186 [Err] 1242 - Subquery returns more than 1 ro ...
- ipython notebook 如何打开.ipynb文件?
标签: pythontensorflow 2017-03-29 14:17 235人阅读 评论(0) 收藏 举报 分类: TensorFlow(13) 转自:https://www.zhihu.c ...