JS实现快速排序算法
以下贴出两种实现方式,结果一样,但有些许的差别:
第一种:
- <script type="text/javascript">
- var arr=[6,7,8,3,4,5,9];
- function quicksort(left,right){
- if(left>right){
- return ;
- }
- var temp=0;
- var i=right;
- var j=left;
- temp=arr[left];
- while(arr[i]>arr[left]){
- i--;
- }
- while(arr[j]<=arr[left]){
- j++;
- }
- if(i>j){
- temp=arr[i];
- arr[i]=arr[j];
- arr[j]=temp;
- quicksort(left,right);
- }
- else{
- arr[left]=arr[i];
- arr[i]=temp;
- quicksort(left,i-1);
- quicksort(i+1,right);
- }
- }
- quicksort(0,6);
- console.log(arr);
- </script>
第二种:
- <script type="text/javascript">
- var a=[6,7,8,3,4,5,9];
- function quicksort(left,right){
- var i,j,t,temp;
- if(left>right){
- return;
- }
- temp=a[left];
- i=left;
- j=right;
- while(i!=j){
- while(a[j]>=temp&&i<j){
- j--;
- }
- while(a[i]<=temp&&i<j){
- i++;
- }
- if(i<j){
- t=a[i];
- a[i]=a[j];
- a[j]=t;
- }
- }
- a[left]=a[i];
- a[i]=temp;
- quicksort(left,i-1);
- quicksort(i+1,right);
- return;
- }
- quicksort(0,6);
- console.log(a);
- </script>
JS实现快速排序算法的更多相关文章
- js快速排序算法解析
数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...
- js快速排序算法
真正的快速排序算法一: function quickSort(array){ function sort(prev, numsize){ var nonius = prev; var j = nums ...
- 快速排序算法 java 实现
快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...
- C# 集合扩展快速排序算法
/// <summary> /// 对集合进行排序,如 /// List<Person> users=new List<Person>(){.......} /// ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- js实现快速排序(in-place)简述
快速排序,又称划分交换排序.以分治法为策略实现的快速排序算法. 本文主要要谈的是利用javascript实现in-place思想的快速排序 分治法: 在计算机科学中,分治法是建基于多项分支递归的一种很 ...
- 快速排序算法(Java)
快速排序算法的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. class Parti ...
- 快速排序算法-C语言实现
注:本篇内容为翻译,之所以选择这篇进行翻译原因是该文章含有动画,能够更加直观地展示快速排序.同时,可以仔细看一下代码,代码中把结构化的思想给予了更加充分地表现.按照功能进行模块划分的思想得到了彻底地贯 ...
- C#快速排序算法基础入门篇
相信算法对于许多开发人员来说都是一大难点,之所以难,就像设计模式一样,许多人在阅读之后,没有很好地理解,也不愿意动手上机操作,只停留在理论的学习上面,随着时间推移就慢慢淡忘. 有些东西,你可以发明创造 ...
随机推荐
- Python36和Python27共存的方法
Python26和Python37环境的配置 设置环境变量 我的电脑右键属性-高级系统属性-环境变量 选择系统变量中的Path,双击打开 加入你的Python安装路径 C:\Python27;C:\P ...
- BOM的节点方法和属性
一.HTML DOM >>>>>>>>>>>>>>>>>>>>具体可以参考W3S ...
- sql将一张表的字段赋值给另一张表
插入数据 1 insert into TbYTZ(UserID) select UserID from TbUser 更新数据则在TbUser和TbYTZ两个表要有一个关系... 如TbUser.a1 ...
- [javaSE] GUI(事件监听机制)
外部动作——>事件源(组件)——>事件对象——>监听器 获取Frame对象,与上节一样 调用Frame对象的addWindowListener()方法,参数:WindowListen ...
- 一:XML知识整理
一:xml 1. xml简介 a) xml, eXtensible Markup Language, 可扩展标记语言.是一种标记语言. b) xml 是一种非常灵活的语言, 没有固定的标签, 所有的标 ...
- 查看SQLServer数据库表占用大小
查看数据库mdf 文件中 各个表数据占用大小. create table #t(name varchar(255), rows bigint, reserved varchar(20), ...
- java util 中set,List 和Map的使用
https://www.cnblogs.com/Lxiaojiang/p/6231724.html 转载
- PAT 1032. Sharing
其实就是链表求交: #include <iostream> #include <cstdio> #include <cstdlib> #include <un ...
- MySQL:PyMySQL&ORM
一.PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQ ...
- csharp:A Custom CheckedListBox with Datasource
/// <summary> /// (eraghi) /// Custom CheckedListBox with binding facilities (Value property) ...