js实现四大经典排序算法
- function createArr(n) {
- var arr = [];
- while (n--) {
- arr.push(~~(Math.random() * 100));
- }
- return arr;
- }
注意一点,当要排序 N 个数,已经经过 N-1 次遍历后,已经是有序数列
- function bubbleSort(arr){
- var len = arr.length,
- i,
- j;
- for(i = 0; i < len - 1; i++){
- for(j = 0; j < len - 1 - i; j++){
- if(a[j] > a[j+1]){
- a[j+1] = [a[j], a[j] = a[j+1]][0];
- }
- }
- }
- return arr;
- }
- function selectSort(arr) {
- var len = arr.length,
- i,
- j,
- min;
- for(i = 0 ; i < len - 1; i++){
- min = i;
- for(j = i + 1; j < len ; j++){
- if(arr[j] < arr[min]){
- min = j;
- }
- }
- if(min != i){
- arr[min] ^= arr[i];
- arr[i] ^= arr[min];
- arr[min] ^= arr[i];
- }
- }
- return arr;
- }
第一种实现方法:
- function quickSort(arr){
- if( (arr.length) > 1){
- var key = arr[0],
- len = arr.length,
- leftArr = [],
- rightArr = [];
- for(var i = 1; i < len; i++){
- if(arr[i] <= key){
- leftArr.push(arr[i]);
- }else {
- rightArr.push(arr[i]);
- }
- }
- leftArr = quickSort(leftArr);
- rightArr = quickSort(rightArr);
- return leftArr.concat(key,rightArr);
- }else{
- return arr;
- }
- }
第二种实现方法:
- 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;
- }
- function insertSort(arr){
- for(var i=1; i<arr.length; i++){
- var tmp = arr[i];
- var key = i - 1;
- while(key>=0&&tmp<arr[key]){
- arr[key+1] = arr[key]
- key--;
- }
- if(key+1 != i){
- arr[key+1] = tmp
- }
- }
- return arr;
- }
js实现四大经典排序算法的更多相关文章
- PHP 中四大经典排序算法
1.冒泡排序 在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换. ...
- 经典排序算法 – 插入排序Insertion sort
经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...
- 经典排序算法总结与实现 ---python
原文:http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/ 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用P ...
- 经典排序算法及python实现
今天我们来谈谈几种经典排序算法,然后用python来实现,最后通过数据来比较几个算法时间 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据 ...
- 经典排序算法 - 基数排序Radix sort
经典排序算法 - 基数排序Radix sort 原理类似桶排序,这里总是须要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,临时忽视十位数 比如 待排序数组[ ...
- 经典排序算法 - 高速排序Quick sort
经典排序算法 - 高速排序Quick sort 原理,通过一趟扫描将要排序的数据切割成独立的两部分,当中一部分的全部数据都比另外一部分的全部数据都要小,然后再按此方法对这两部分数据分别进行高速排序,整 ...
- 经典排序算法 - 归并排序Merge sort
经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到所有合并完,形成有序的数组 举例 无序数组[6 2 ...
- C# 经典排序算法大全
C# 经典排序算法大全 选择排序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...
- Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
2017年4月29日~5月1日,国际劳动节, 三天的小长假. 在国内,小长假往往是这样的: 然而我当时在戏称为"德村"(德国农村)的Walldorf出差并且住在Wiesloch, ...
随机推荐
- 告别被拒,如何提升iOS审核通过率(上篇)
iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...
- vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- 【微框架】之一:从零开始,轻松搞定SpringCloud微框架系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- Go web开发初探
2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...
- 去IOE的一点反对意见以及其他
某天在机场听见两老板在聊天,说到他们目前销售的报表老跟不上的问题,说要请一个人,专门合并和分析一些发过来的excel表格,我真想冲上去说,老板,你需要的是一个信息处理的系统,你需要咨询么.回来一直耿耿 ...
- win7下利用ftp实现华为路由器的上传和下载
win7下利用ftp实现华为路由器的上传和下载 1. Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...
- Xcode 锁终端
锁终端 输入: <1>cd /Applications/Xcode.app 回车 结果显示: Xcode.app 输入: <2>sudo chown -hR root:whee ...
- 使用git进行源代码管理
git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...
- Ajax.BeginForm方法 参数
感谢博主 http://www.cnblogs.com/zzgblog/p/5454019.html toyoung 在Asp.Net的MVC中的语法,在Razor页面中使用,替代JQuery的Aja ...