js几种常见排序的实现

1.  冒泡排序 

定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换。 
这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 
N=N-1,如果N不为0就重复前面二步,否则排序完成。

  function bubbleSort(arr){for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } return arr; } console.log(bubbleSort([6,1,2,4,3,5]))
2. 选择排序

 

比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换……第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。

     function selectSort(arr){var min,temp;for(var i=0;i<arr.length-1;i++){ min=i; for(var j=i+1;j<arr.length;j++){ if(arr[j]<arr[min]){ min = j; } } temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; } return arr; } console.log(selectSort([6,1,2,4,3,5])) 
 3. 快速排序

定义: 
1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

 function quickSort(arr){if(arr.length<2){return arr} var left=[],right=[],mid=arr.splice(Math.floor(arr.length/2),1); for(var i=0;i<arr.length;i++){ if(arr[i]<mid){ left.push(arr[i]); }else { right.push(arr[i]) } } return quickSort(left).concat(mid,quickSort(right)) } console.log(quickSort([6,1,2,4,3,5]))
 4. 插入排序

从第一个元素开始,该元素可以认为已经被排序; 
取出下一个元素,在已经排序的元素序列中从后向前扫描; 
如果该元素(已排序)大于新元素,将该元素移到下一位置; 
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; 
将新元素插入到该位置后; 
重复步骤2~5。

 function insertSort(arr){var len = arr.length; for (var i = 1; i < len; i++) { var key = arr[i]; var j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } return arr; }

转载于:https://www.cnblogs.com/wws-bk/p/9660555.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode--695. 岛屿的最大面积

给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿&#xff0c;则返回面积为0。) 示例 1: [[0,0,1,0,0,0…

“NP问题是可计算的吗?” - 从“可计算性”的角度审视NP

来源&#xff1a;图灵人工智能转自 http://blog.sciencenet.cn/u/liuyu2205P vs NP世纪难题显示出在现有的计算机理论中存在着令人不安的困惑&#xff1a;一方面&#xff0c;书本中的NP问题理论部份无论是学习或教学都感到困难&#xff0c;以至于人们不得不一次又一次回头去重新…

日志模块-logging模块

日志模块 -logging(非常重要) 记录用户行为程序运行过程程序错误记录logging.debug()通常调试时用到的日志信息logging.info() #证明事情按照预期的那样工作longging.warning() #表明发生了意外&#xff0c;或者不就得将来发生的问题&#xff08;如&#xff1a;磁盘满了&#x…

Leetcode--字符串压缩

字符串压缩。利用字符重复出现的次数&#xff0c;编写一种方法&#xff0c;实现基本的字符串压缩功能。比如&#xff0c;字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短&#xff0c;则返回原先的字符串。你可以假设字符串中只包含大小写英文字母&#xff08;a…

GPT-3和AlphaFold 2震撼2020,2021年AI最大看点在哪儿?

来源&#xff1a;机器学习研究组订阅2020年并不缺重磅新闻&#xff0c;但人工智能依然够杀出重围&#xff0c;走进主流视野。尤其是GPT-3&#xff0c;它展示了人工智能即将以全新的方式深入我们的日常生活。这些进步赋予了未来很多可能&#xff0c;预测未来变得并不容易&#x…

SpringBoot RequestBody ajax提交对象

前端实现&#xff1a; var student {"name":1,"age":2,"score":3 }; $.ajax({ url:"student/test/delStudentByPrimaryKey.action",contentType:"application/json;charsetUTF-8",type:POS…

Leetcode--1160.拼写单词(Java)

给你一份『词汇表』&#xff08;字符串数组&#xff09; words 和一张『字母表』&#xff08;字符串&#xff09; chars。 假如你可以用 chars 中的『字母』&#xff08;字符&#xff09;拼写出 words 中的某个『单词』&#xff08;字符串&#xff09;&#xff0c;那么我们就认…

宇宙与无限之谜

文&#xff1a;Alan Lightman译&#xff1a;Sue校对&#xff1a;Rachel在博尔赫斯&#xff08;Jorge Luis Borges&#xff09;的《沙之书》&#xff08;The Book of Sand&#xff09;中&#xff0c;一个神秘的传教者敲开了故事主人公的门&#xff0c;想要卖给他一本圣书。这本书…

BZOJ 2124 等差子序列 线段树维护哈希

$ \Rightarrow $ 戳我进BZOJ原题 等差子序列Time Limit: 3 Sec $ \quad $ Memory Limit: 259 MBDescription 给一个 $ 1 $ 到 $ N $ 的排列 $ (A_i) $ &#xff0c;询问是否存在 $ 1 \le p_1<p_2<p_3<p_4<p_5<…<p_ \le N (Len \ge 3) $ &#xff0c; 使得 $…

Leetcode:892. 三维形体的表面积(Java)

在 N * N 的网格上&#xff0c;我们放置一些 1 * 1 * 1 的立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1&#xff1a; 输入&#xff1a;[[2]] 输出&#xff1a;10 示例 2&#xff1a; 输入&#xff1a;[…

微软、IBM们的中国研究院是怎样一步步“躺平”的?

来源&#xff1a; 脑极体IBM中国研究院关闭的消息&#xff0c;又让大家想起了曾经甲骨文、微软、Adobe等外企研究机构离华的新闻。从上世纪末本世纪初来华&#xff0c;十多年情缘突然宣告分手&#xff0c;固然是遗憾的&#xff0c;也更令人好奇背后的原因。公司业绩表现不佳、研…

P1110 [ZJOI2007]报表统计

题目描述 Q的妈妈是一个出纳&#xff0c;经常需要做一些统计报表的工作。今天是妈妈的生日&#xff0c;小Q希望可以帮妈妈分担一些工作&#xff0c;作为她的生日礼物之一。 经过仔细观察&#xff0c;小Q发现统计一张报表实际上是维护一个非负整数数列&#xff0c;并且进行一些查…

斯坦福 AI 课程 10 年发展史

作者&#xff1a;Rachel Oh 、Peter Maldonado转自&#xff1a;机器之心编辑&#xff1a;杜伟、小舟在人工智能领域&#xff0c;斯坦福大学的很多课程都颇受欢迎&#xff0c;如 CS 224N 深度学习自然语言处理和 CS 229 机器学习。这些课程如何一步步发展成为今天的热门课程&…

Leetcode--820:单词的压缩编码(java)

给定一个单词列表&#xff0c;我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如&#xff0c;如果这个列表是 ["time", "me", "bell"]&#xff0c;我们就可以将其表示为 S "time#bell#" 和 indexes [0, 2, 5]。 对于…

Leetcode--130. 被围绕的区域(java)

给定一个二维的矩阵&#xff0c;包含 X 和 O&#xff08;字母 O&#xff09;。 找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后&#xff0c;矩阵变为&#xff1a; X X X X X X X X X X X X…

6G技术长啥样?5大趋势,13个核心技术2030年落地

来源&#xff1a;智东西5G已经展开了全面商用&#xff0c;随着5G在垂直行业的不断渗透&#xff0c;人们对于6G的设想也逐步提上日程。面向2030, 6G将在5G基础上全面支持整个世界的数字化&#xff0c;并结合人工智能等技术的发展&#xff0c;实现智慧的泛在可取、全面赋能万事万…

微积分的未来:DNA、非线性、混沌、复杂系统与人工智能

导语微积分是人类历史上的伟大思想成就之一&#xff0c;也是数学领域不可或缺的一个重要分支。如果没有微积分&#xff0c;人类就不可能发明电视、微波炉、移动电话、GPS、激光视力矫正手术、孕妇超声检查&#xff0c;也不可能发现冥王星、破解人类基因组、治疗艾滋病&#xff…

Leetcode--1111. 有效括号的嵌套深度(Java)

有效括号字符串 仅由 "(" 和 ")" 构成&#xff0c;并符合下述几个条件之一&#xff1a; 空字符串 连接&#xff0c;可以记作 AB&#xff08;A 与 B 连接&#xff09;&#xff0c;其中 A 和 B 都是有效括号字符串 嵌套&#xff0c;可以记作 (A)&#xff0c…

计蒜客第三场

1、有序数组查找 假设一个数组&#xff0c;事先在你未知的情况下&#xff0c;以某一点分段有序排列。比如&#xff1a;&#xff08;0,0,0,1,2,2,3 变成 0,0,1,2,2,3,0&#xff0c;定需要查找的数&#xff0c;在当前数组中查找&#xff0c;存在&#xff0c;返回ture&#xff0c;…

美国防部官员讨论量子科学、5G和定向能的发展

来源&#xff1a;国防科技要闻3月8日&#xff0c;美国防部国防研究与工程办公室负责现代化建设的三名官员在国防工业协会太平洋作战科技虚拟会议上讨论了量子科学、5G和定向能的发展。量子科学量子科学主要负责人保罗洛帕塔表示&#xff0c;国防部在过去的二三十年里一直在进行…