`
biyeah
  • 浏览: 203319 次
  • 来自: ...
社区版块
存档分类
最新评论

排序算法(javascript版与ruby版)

 
阅读更多
排序算法(javascript版与ruby版)


合并排序
javascript版本:
function merge(left, right){
  var result = [];
  while (left.length > 0 && right.length > 0){
    if (left[0] < right[0]){
      result.push(left.shift());//把最小的最先取出,放到结果集中
    } else {
      result.push(right.shift());
    }
  } return result.concat(left).concat(right);//剩下的就是合并,这样就排好序了
}
function mergeSort(array){
  if (array.length == 1) {
    return array;
  }
  var middle = Math.floor(array.length / 2),//求出中点
  left = array.slice(0, middle),//分割数组
  right = array.slice(middle);
  return merge(mergeSort(left), mergeSort(right));//递归合并与排序
}

ruby版本:
def merge(left, right)
  final = []
  until left.empty? or right.empty?
    final << ( left.first < right.first ? left.shift : right.shift )
  end
  final + left + right
end
def mergeSort(array)
  return array if array.size < 2
  left = array.first(array.size/2)
  right = array.last(array.size - array.size/2)
  merge(mergeSort(left), mergeSort(right))
end


快速排序
javascript版

function quicksort(arr)
{
    if (arr.length == 0)
        return [];
 
    var left = new Array();
    var right = new Array();
    var pivot = arr[0];
 
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] < pivot) {
           left.push(arr[i]);
        } else {
           right.push(arr[i]);
        }
    }
 
    return quicksort(left).concat(pivot, quicksort(right));
}


ruby版
def quicksort(v)
   return v if v.nil? or v.length <= 1
   less, more = v[1..-1].partition { |i| i < v[0] }
   quicksort(less) + [v[0]] + quicksort(more)
end
分享到:
评论

相关推荐

    Algorithm_lab:实验算法的地方-JavaScript和Ruby

    常见的算法,如排序(冒泡排序、快速排序、归并排序)、查找(线性查找、二分查找)、图和树的遍历(深度优先搜索、广度优先搜索),都可以用JavaScript来实现。此外,JavaScript还提供了丰富的库和框架,如lodash、...

    练习算法:通过使测试通过JavaScript或Ruby来练习算法

    该存储库包含一系列测试,可用于实践Javascript和Ruby编程语言中的算法。 首先,只需使用git clone https://github.com/jaysonvirissimo/practice-thy-algorithms.git克隆此仓库即可。 JavaScript说明 确保在系统上...

    Sorting-Algorithms:多种语言的排序算法

    排序算法排序是指以递增/递增/不递减或递减/递减/不递增的顺序排列以下一组数字,我们在编程时需要某些算法才能实现。各种排序算法如下:气泡排序冒泡排序(有时也称为沉没排序)是一种简单的排序算法,它反复遍历要...

    算法:数据结构和算法。 包括破解编码面试第六版的解决方案

    这是用JavaScript和Ruby编写的数据结构和算法的存储库。 一些算法来自 。 贡献 欢迎捐款! 请阅读和以了解如何贡献。 该项目已获得。 Ruby说明: 要运行Ruby规范,请在终端中执行rspec命令 JavaScript说明: 要...

    [源代码]Python算法详解.rar

    )收藏评论(0)举报资料介绍基于Python分别讲解了算法是程序的灵魂,数据结构,常用的算法思想,线性表、队列和栈,树,图,查找算法,内部排序算法,经典的数据结构问题,解决数学问题,经典算法问题,解决图像问题...

    Algorithm-practice-thy-algorithms.zip

    "Algorithm-practice-thy-algorithms.zip" 文件集合正是一个专门用于提升算法能力的实践平台,它包含了用JavaScript或Ruby实现的各种算法,旨在帮助开发者通过实际操作来深化对算法的理解。 算法的实践至关重要,...

    DanielShiffman的“学习处理”中的示例,全部在Ruby-Processing中完成_Ruby_下载.zip

    6. **数据和算法**:使用数组、列表和其他数据结构,以及探索各种算法,如排序和搜索,来生成复杂的图形模式。 7. **物理模拟**:模拟基本的物理现象,如重力、碰撞检测和刚体动力学,为项目添加真实感。 8. **...

    algorithm:使用 JavaScriptRubyC++ 实现常用算法

    例如,排序算法(如冒泡排序、选择排序、快速排序)可以利用数组的遍历特性来实现。此外,JavaScript 的高级特性,如闭包和异步处理,也能在特定的算法中发挥作用,比如递归和非阻塞I/O操作。 Ruby,由松本行弘设计...

    Sedgewick-Algorithms-[removed]我用Javascript实现Sedgewick算法问题

    我也考虑过在Ruby,C或Go中执行此操作,但我选择专注于Javascript,因为它更有趣。 测验 运行命令npm test以查看每种算法的时间结果。 对于排序,测试将以大小为1000的数组运行100次。 如果要更改这些值,可以在/...

    个人职责:算法前端开发后端开发工作内容.zip

    3. **算法理解**:前端开发者应具备一定的数学和统计知识,以便理解和应用各种算法,如排序、搜索、预测等。 4. **性能优化**:优化代码以减少加载时间、提高响应速度是前端开发的重点,这包括使用Web Workers进行...

    Rainbow-Sort:多彩排序可视化

    虽然题目中没有明确指出具体的排序算法,但通常这种可视化工具会涵盖常见的排序算法,例如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。每种算法都有其独特的特点和适用场景,通过可视化展示,我们...

    javalruleetcode-Leetcode:java、javascript和ruby中400多个leetcode问题的算法解决方案

    从排序数组中删除重复项 ,, 27 删除元素 ,, 28 实施 Str Str ,, 35 搜索插入位置 ,, 38 数数说 ,, 53 最大子阵列 ,, 58 最后一句话的长度 ,, 66 加一 ,, 67 添加二进制 ,, 69 平方 ,, 70 爬楼梯 ,, 83 从排序列表中...

    006981:任何人的数据结构和算法源代码

    例如,排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序等,它们各有优缺点,适用于不同的场景;查找算法有线性查找、二分查找、哈希查找等,其中二分查找和哈希查找在特定条件下具有较高的效率...

    code-challenges:JavaScript,Ruby,Python和Shell脚本中的解决方案所带来的一系列代码挑战

    5. 数据结构和算法:如数组、对象、栈、队列、链表等,以及排序和搜索算法。 接下来是Ruby,一种注重简洁性和生产力的动态类型语言,常用于Web开发(如Rails框架)。Ruby挑战可能涵盖: 1. 元编程:Ruby的动态特性...

    算法:以多种编程语言实现的不同算法和数据结构的存储库

    数据结构与算法 用不同语言编写的数据结构和算法的干净示例实现。 实施清单 贡献! 始终欢迎捐款。 语言无所谓。 只要确保您正在实现一个算法即可。 欢迎公关。 要开始开发,请遵循以下结构: 算法类型/算法名称/...

    cleveralgorithms

    3. **排序算法**:如快速排序、归并排序、冒泡排序、插入排序、选择排序等,这些排序算法在Ruby中的实现有助于理解它们的工作原理,以及在不同场景下的效率差异。 4. **搜索算法**:包括线性搜索、二分搜索、深度...

Global site tag (gtag.js) - Google Analytics