文档章节

js关于数组简易排序的一些写法(持续更新)

 甜酒0917
发布于 2016/11/30 10:28
字数 371
阅读 7
收藏 0

js关于数组简易排序的一些写法:

  1:快速排序

  

function fastSort(a){
if(a.length<=1){return a};

    var num = Math.floor(a.length / 2);
	//var num=parseInt(a.length/2);
  var reference = a[num-1];	
    var referenceLeft=[];
    var referenceRight=[];


for(var i=0;i<a.length;i++){	
	if(i==(num-1)){continue}
	if(a[i]<reference){
     referenceLeft.push(a[i]);
	}else{
     referenceRight.push(a[i]);
	}
 }
return fastSort(referenceLeft).concat([reference],fastSort(referenceRight));
}
	
var arrayA=[2,4,65,7,434,89,33,998,43,234,556,6,4,7];
	
	console.log(fastSort(arrayA))

2:数组去重

 function detection(a){
  var temp=[];

  for(var i=0;i<a.length;i++){
     var flag=true;
     for(var j=0;j<temp.length;j++){
       if(a[i]==temp[j]){
          flag=false;
          break;
       }
     }
     if(flag==true){
       temp.push(a[i]);
     }
  }
    return temp;

 }

3 去重加快速排序

 function fastSortDetection(a){
   if(a.length<=1){return a};

    var num = Math.floor(a.length / 2);
	//var num=parseInt(a.length/2);
  var reference = a[num-1];	
    var referenceLeft=[];
    var referenceRight=[];


   for(var i=0;i<a.length;i++){	
	if(i==(num-1)){continue}
	if(a[i]<reference){
     referenceLeft.push(a[i]);
	}else if(a[i]>reference){
     referenceRight.push(a[i]);
	}
   }
   return fastSort(referenceLeft).concat([reference],fastSort(referenceRight));
 }

 4 非递归实现快速排序及去重

function fastSortDetection(a){
   var ary=[];
   var temp=[];

        var referenceRight=[];
        var referenceLeft=[];
        var num = Math.floor(a.length / 2);

        for(var i=0;i<num;i++){
          if(a[i]<a[num]){
            referenceLeft.push(a[i]);            
          }else if(a[i]>a[num]){
            referenceRight.push(a[i]);  
          }
        }

        for(var i=num;i<a.length;i++){
          if(a[i]<a[num]){
            referenceLeft.push(a[i]);            
          }else if(a[i]>a[num]){
            referenceRight.push(a[i]);  
          }
        }
      temp.push(referenceLeft,[a[num]],referenceRight);
      
      while(temp.length>0){
       var aryLeft=temp.shift();
       if(aryLeft.length==1){
         ary.push(aryLeft[0]);
       }else if(aryLeft.length>1){
         referenceRight=[];
         referenceLeft=[];
         num = Math.floor(aryLeft.length / 2);

        for(var i=0;i<num;i++){
          if(aryLeft[i]<aryLeft[num]){
            referenceLeft.push(aryLeft[i]);            
          }else if(aryLeft[i]>aryLeft[num]){
            referenceRight.push(aryLeft[i]);  
          }
        }

        for(var i=num;i<aryLeft.length;i++){
          if(aryLeft[i]<aryLeft[num]){
            referenceLeft.push(aryLeft[i]);            
          }else if(aryLeft[i]>aryLeft[num]){
            referenceRight.push(aryLeft[i]);  
          }
        }
        temp.unshift(referenceLeft,[aryLeft[num]],referenceRight)
       }
     
     }
    return ary;

 }

 

© 著作权归作者所有

粉丝 1
博文 13
码字总数 3450
作品 0
武汉
私信 提问
JavaScript深入浅出第2课:函数是一等公民是什么意思呢?

摘要: 听起来很炫酷的一等公民是啥? 《JavaScript深入浅出》系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函数是一等公民是什么意思呢? 看...

Fundebug
06/25
0
0
Javascript 函数式编程:什么是高阶函数?我们为什么需要了解它?

原文:jrsinclair.com/articles/20… 作者:James Sinclair 翻译:前端小白 高阶函数是大家经常挂在嘴边的,但是很少有人去解释它是什么,也许你已经知道什么是高阶函数了。但是我们如何在现...

小白学前端
07/11
0
0
JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa
2018/06/19
89
0
javascript数组的申明方式以及常用方法

数组的定义: 方法1. var mycars=new Array() mycars[0]="Saab" mycars[1]="Volvo" mycars[2]="BMW" 方法2. 定义和初始化一起: var mycars=new Array("Saab","Volvo","BMW") 或者另一种写法......

icheer
2014/07/05
126
0
webpack4.0 CheatSheet

还在为webpack的配置而烦恼吗?这里有一份webpack从简易到高级版本的配置。还附赠配置地址,你想要吗?不,你不想。老老实实自己配置去吧。 压箱底的笔记而已,大家看看乐乐就好了,这是笔者...

cherryvenus
03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

刚哥谈架构 (二) 我眼中的架构师

之前在公司,有小伙伴在向别人介绍我的时候,经常会有人这么说:“刚哥是我们的architcture”,如果来人是老外,心中一定是一惊,心中暗叹,“这位匪首看上去貌不惊人,难道已经做到了架构和...

naughty
48分钟前
5
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
124
4
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部