`
any512
  • 浏览: 5066 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby的归并排序

    博客分类:
  • Ruby
阅读更多
ruby 代码 [sort.rb]
 
  1. #!/usr/bin/env ruby  
  2. class Sort  
  3.   def putList(l)  
  4.     a = []  
  5.     a = l  
  6.     b = "["  
  7.     a.each do |aa|  
  8.       b += (aa.to_s + ",")  
  9.     end  
  10.     b += "]"  
  11.     b.gsub!(/,\]/,']')  
  12.     puts b  
  13.   end  
  14. end 
ruby 代码 [MergerSort.rb]
 
  1. #!/usr/bin/env ruby  
  2. require 'Sort'  
  3.   
  4. class MergerSort < Sort  
  5.   @list = []  
  6.   def sort(l)  
  7.     @list = l  
  8.     mergeSort(@list,0,@list.length - 1)  
  9.     putList @list  
  10.   end  
  11.   def merge(a,p,q,r)  
  12.     list_L = a[p,q-p+1]  
  13.     list_R = a[q+1,r-q+1]  
  14.       
  15.     list_L[q-p+1] = "eof"  
  16.     list_R[r-q] = "eof"  
  17.       
  18.     i = 0  
  19.     j = 0  
  20.       
  21.     until i + j > r-p  
  22.       if list_L[i] != "eof" && ( list_R[j] == "eof" || list_L[i] < list_R[j])  
  23.         a[p+i+j] = list_L[i]  
  24.         i += 1  
  25.       elsif list_R[j] != "eof"  
  26.         a[p+i+j] = list_R[j]  
  27.         j += 1  
  28.       end  
  29.     end  
  30.   end  
  31.     
  32.   def mergeSort(a,p,r)  
  33.     if p < r  
  34.       q = (p + r) / 2  
  35.       mergeSort(a,p,q)  
  36.       mergeSort(a,q+1,r)  
  37.       merge(a,p,q,r)  
  38.     end  
  39.   end  
  40. end  
  41.   
  42. ms = MergerSort.new  
  43. #a = [2,4,3,1,2.5,0,6,100,24,64,18,72,100,88,99,88]  
  44. a = []  
  45. 1000.times do  
  46.   a << rand(1000)  
  47. end  
  48. t1 = Time.new  
  49. ms.sort(a)  
  50. t2 = Time.new  
  51. puts "%.6f" % (t2.to_f - t1.to_f)  
分享到:
评论

相关推荐

    ruby-使用ruby实现的排序算法-sorting.zip

    归并排序也是一种分治策略,它将数组分成两半,分别排序,然后合并。Ruby中可以使用递归实现: ```ruby def merge_sort(array) return array if array.length mid = array.length / 2 left = merge_sort(array...

    ruby-使用ruby实现的算法之冒泡排序.zip

    这不仅有助于提升编程能力,也有助于理解和应用其他更高效的排序算法,如快速排序、归并排序等。在实际开发中,了解和熟悉这些基础算法对于优化代码性能、解决实际问题都至关重要。因此,无论你是初学者还是经验丰富...

    ruby写的几个小算法

    在`sort.rb`文件中,可能包含了不同的排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序或者堆排序等。例如: 1. **冒泡排序**(Bubble Sort):是最简单的排序算法之一,通过不断交换相邻的未排序...

    sorting_algorithm:Ruby中排序算法的教学模块

    在编程领域,排序算法是...例如,快速排序和归并排序在平均情况下具有较好的时间复杂度,而冒泡排序和插入排序则适用于小规模或部分有序的数据。理解每种排序算法的优缺点,能帮助开发者在面对具体问题时做出最佳选择。

    Ruby实现的各种排序算法

    ### Ruby 实现的各种排序算法详解 #### 一、概述 在计算机科学中,排序算法是基本且重要的数据处理手段...而在大数据量排序时,归并排序或快速排序则更为合适。希望本文能够帮助大家更好地理解和掌握排序算法的应用。

    Ruby-编程基础阅读物主要是Ruby示例

    Ruby可以用来实现各种算法,如排序算法(冒泡排序、快速排序、归并排序)、查找算法(二分查找、广度优先搜索、深度优先搜索)等。熟悉算法能够帮助优化代码性能。 7. **Ruby开发-其它杂项**:这个标签可能涵盖了...

    Ruby算法和数据结构。C扩展_Ruby_C_下载.zip

    1. **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,这些都是处理大量数据时的基础工具。 2. **查找算法**:例如线性查找、二分查找、哈希查找,用于在数据集中寻找特定元素。 3. *...

    data_structures:各种数据结构的 Ruby 实现

    = 推流行音乐找删除最大限度分钟排序数组Array 的子类,但它仍然按所有操作排序堆队列链表双端列表排序列表双向链表二叉搜索树红黑树2-3-4 树哈希表堆图形加权图算法冒泡排序 插入排序 选择排序 奇偶排序 归并排序 ...

    leetcode-ruby:Ruby中的LeetCode问题

    6. **算法与数据结构**:LeetCode问题通常涉及经典的算法和数据结构,如排序(快速排序、归并排序等)、搜索(二分查找等)、栈、队列、链表、树等。了解并能灵活运用这些概念是解决问题的关键。 7. **Ruby标准库**...

    algos:Ruby中的 CLRS 算法

    归并排序 插入排序 堆排序 快速排序 计数排序 基数排序 桶排序 算法: 最大子数组(递归,不是最优的) kadane 算法(最优最大子阵列算法) 最小最大 第 k 个号码(选择) 杆切割 最长公共子序列 最长递增子...

    一个用Python、Ruby和其他编程语言实现算法简介(Cormen、Leiserson、Rivest和Stein)中的.zip

    在压缩包中的Python代码,可能包括排序算法(如冒泡排序、插入排序、选择排序、快速排序、归并排序)、搜索算法(如二分查找、广度优先搜索、深度优先搜索)、图算法(如Dijkstra最短路径算法、Floyd-Warshall所有对...

    ruby-algorithmic-strategies

    1. 排序算法:Ruby提供了`sort`方法来对数组进行排序,但理解快速排序、归并排序或堆排序等基本原理有助于在特定场景下优化性能。 2. 搜索算法:线性搜索、二分搜索和哈希查找是常见的搜索策略。Ruby中的`index`和`...

    ruby_data_structures:Ruby中的数据结构和算法实践

    - 冒泡排序、选择排序、插入排序、快速排序、归并排序等排序算法在Ruby中都有实现。 - 线性搜索、二分搜索、哈希查找等搜索算法也是基础编程技能。 九、递归与迭代 Ruby支持递归函数和迭代器,可以用于解决复杂问题...

    algorithms_ruby:该存储库包含用 RUBY 编写的基本算法的实现

    - **归并排序**(Merge Sort):同样使用分治策略,将数组分成小段,分别排序,然后合并这些有序段。 - **堆排序**(Heap Sort):利用堆这种数据结构进行排序。 2. **查找算法**: - **线性搜索**(Linear ...

    Data-Structures-Algorithms-Ruby

    常见的算法类型有排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)、搜索算法(如二分查找、深度优先搜索、广度优先搜索)、图算法(如最短路径问题的Dijkstra算法、Floyd算法)以及动态规划、...

    Algorithms-and-Data-Structures-in-Ruby:只是为了教育

    1. **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序等,用于将元素按照特定顺序排列。 2. **搜索算法**:如线性搜索、二分搜索,用于在数据结构中查找特定元素。 3. **递归**:通过函数调用...

    algorithm_design_manual:Skiena 算法设计手册的解决方案和内容

    在Ruby中,这些算法的实现各有特点,例如,快速排序利用了分治策略,而归并排序则需要额外的内存空间进行合并。 2. **搜索算法**:包括线性搜索、二分搜索以及各种树结构的搜索算法,如二叉搜索树、AVL树、红黑树等...

    DataStructures:Ruby 中的数据结构和算法

    3. 分治算法:例如,快速排序和归并排序,它们都是高效的排序算法,利用了分而治之的思想。 4. 动态规划:在解决复杂问题时,动态规划是一种有效的策略,通过将大问题分解为子问题来求解。例如,计算斐波那契数列。...

    Rainbow-Sort:多彩排序可视化

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

    SoluionCollection:算法大赛解题合集

    但对于更复杂的排序算法如快速排序和归并排序,Ruby的面向对象特性使得我们能够以清晰的方式实现它们。 2. 查找算法:Ruby中的数组和哈希都支持查找操作。对于二分查找,我们可以通过Ruby的数组索引来实现高效的...

Global site tag (gtag.js) - Google Analytics