1. 冒泡排序

//冒泡排序(从小到大排列)
function bubbleSort(arr){//一共比较length-1次for(var i=1, len=arr.length; i<len; i++){//从尾到头(当然也可以从头到尾)for(var j=len-1; j>0; j--){//大的排在后面if(arr[j] < arr[j-1]){var tmp = arr[j];arr[j] = arr[j-1];arr[j-1] = tmp;}}}return arr;
}var arr = [6,5,4,3,2,1];
console.log(arr);
console.log( bubbleSort(arr) );

 2. 鸡尾酒排序 (双向的冒泡排序)

//鸡尾酒排序排序(从小到大排列)
function cocktailSort(arr) {//一共比较Math.ceil(length/2)次for(var i = 0, len=arr.length; i < len/2; i++) {//将最小值排在队头for(var j = i; j < len-i-1; j++) {//大换后if(arr[j] > arr[j+1]) {var temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}console.log( "大换后(index="+j+"):"+arr.join(',') );}//将最大值排到队尾for(var j = len-i-1 ; j > i; j--) {//小换前if(arr[j] < arr[j-1]) {var temp = arr[j];arr[j] = arr[j-1];arr[j-1] = temp;}console.log( "小换前(index="+j+"):"+arr.join(',') );}console.log("第"+(i+1)+"次排序结果:"+arr.join(','));}return arr;
}
var arr = [6,5,4,3,2,1];console.log(arr);
cocktailSort(arr);

 3. 快速排序

//快速排序
function quickSort(arr) {if (arr.length < 2) { return arr; }var firstItem = arr[0]; //取第一个数作为基准数var left = [];var right = [];//从第2个数开始,通过与基准数比较后,分成大小两类for (var i = 1; i < arr.length; i++){//小于基准数if (arr[i] < firstItem) {left.push(arr[i]);} else {right.push(arr[i]);}}console.log(left.join(',')+" ("+firstItem+") "+right.join(','));return quickSort(left).concat([firstItem], quickSort(right));
}var arr = [6,5,4,3,2,1,10,9,8,7];
console.log(quickSort(arr));

转载于:https://www.cnblogs.com/langtao/p/3431245.html

各种排序算法的js实现相关推荐

  1. 查找和排序算法的js实现

    查找和排序算法的js实现 查找和排序算法的js实现 二分查找(适用于有序述组) 选择排序 快速排序 归并(合并)排序 查找和排序算法的js实现 学习算法时,将算法手写实现,加深记忆. 二分查找(适用于 ...

  2. JavaScript学习总结(15)——十大经典排序算法的JS版

    前言 这世界上总存在着那么一些看似相似但有完全不同的东西,比如雷锋和雷峰塔,小平和小平头,玛丽和马里奥,Java和javascript-.当年javascript为了抱Java大腿恬不知耻的让自己变成 ...

  3. js【详解】arr.sort()数组排序(内含十大经典排序算法的js实现)

    arr.sort()默认按照Unicode编码,从小到大进行排序,会改变原数组 let arr = ["e", "b", "d", &quo ...

  4. JS写的排序算法演示

    看到网上有老外写的,就拿起自已之前完成的jmgraph画图组件也写了一个. 想了解jmgraph的请移步:https://github.com/jiamao/jmgraph 当前演示请查看:http: ...

  5. js排序算法详解-归并排序

    js系列教程5-数据结构和算法全解 js排序算法详解-归并排序 归并排序其实可以类比二分法,二分法其实就是二等分的意思,简而言之就是不断和新序列的中间值进行比较.归并排序似乎有异曲同工之妙,什么意思呢 ...

  6. js排序算法详解-基数排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-基数排序 其实基数排序和桶排序挺类似的,都是找一个容器把属于同一类的元素装起来,然后进行排序.可以把基数排序类 ...

  7. js排序算法详解-桶排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-桶排序 一看到这个名字就会觉得奇特,几个意思,我排序还要再准备几个桶不成?还真别说,想用桶排序还得真准备几个桶 ...

  8. js排序算法详解-计数排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-计数排序 计数排序就是遍历数组记录数组下的元素出现过多次,然后把这个元素找个位置先安置下来,简单点说就是以原数 ...

  9. js排序算法详解-堆排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-堆排序 这种排序方式呢,理论性太强,看动图的时候满脸写着懵逼,多看几遍似乎明白了编者的意图,但是要把这种理论的 ...

最新文章

  1. Reactor模式与Proactor模式
  2. [转载]eclipse的远程调试功能配置
  3. 抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例
  4. 以下属于linux文件系统认为的文件是,信息安全技术题库:在Linux系统中,图形文件、数据文件、文档文件等都属于()。...
  5. 计算机沟通方式,雅思阅读练习:计算机改变沟通方式
  6. qcustomplot圆_QCustomPlot使用心得五:坐标轴常用属性设置
  7. kafka zookeeper java_简单搭建kafka + zookeeper,附简单Java生产和消费客户端
  8. linux_network
  9. ajax异步加载页面元素,使用jQuery的AJAX封装函数load()异步加载多个页面的相同页头/页尾(注意:js无法操作动态生成的网页元素)...
  10. QFIL进入900E或90DB模式,download fail
  11. linux进入pe系统,如何进入pe系统【图文详解】
  12. C语言-扫雷游戏程序设计
  13. 3dmax:3dmax三维VR渲染设置(VR间接照明GI栏、【VR间接(全局)照明】发光贴图、光子贴图、BF算法、灯光贴图、灯光缓存)之详细攻略(切记收藏!)
  14. easyrecovery免费数据恢复工具操作简单一键恢复数据
  15. [转载]揭秘骇人的湘西“赶尸”奇俗
  16. Retrofit自定义CallAdapterFactory
  17. 网站服务器带宽2m怎么样,云服务器带宽2m够用吗
  18. hrbust 2366 Print rhombus
  19. Multisim应用举例实验
  20. conda命令下载包报错总结

热门文章

  1. Python的if __name__ == ‘__main__‘:的作用
  2. memcpy-结构体的复制
  3. oracle双机python连接_Python连接Oracle
  4. XP中预防U盘自动运行病毒的方法!
  5. AttributeError: module librosa has no attribute output No module named numba.decorators错误解决
  6. LSTM训练手写数字识别
  7. [cocoapods]cocoapods问题解决
  8. OAF中下载附件之后页面失效,报过时的数据异常,浏览器后退异常
  9. 公司Windows Office升级项目总结
  10. XYPatch,Windows XP手工升级补丁