Ruby学习之路——编程实践【3】 排序——快速排序
2012-06-04 18:13
465 查看
编程实现【3】 2012-06-04
实现快速排序
续:简化快速排序算法如下
实现快速排序
arrInt = [23, 2, 56, 89, 12, 45] def swap(arrInt, m, n) temp = arrInt[m] arrInt[m] = arrInt arrInt = temp end def quickSort(arrInt, low, high) middle = 0 if low < high middle = partition(arrInt, low, high) quickSort(arrInt, low, middle -1) quickSort(arrInt, middle + 1, high) end end def partition(arrInt, low, high) middle = low middleValue = arrInt[low] # (low + 1).upto(high) do |i| # ((low + 1)..high).each do |i| # (low + 1).step(high, 1) do |i| for i in (low + 1)..high if arrInt[i] < middleValue then middle = middle + 1 swap(arrInt, middle, i) end end swap(arrInt, low, middle) return middle end quickSort(arrInt, 0, arrInt.length - 1) p arrInt
续:简化快速排序算法如下
#begin def quickSort(arrInt, low = 0, high = arrInt.length - 1) if low < high then middle = partition(arrInt, low, high) quickSort(arrInt, low, middle - 1) quickSort(arrInt, middle + 1, high) end end def partition(arrInt, low, high) middle = low middleValue = arrInt[low] (low + 1).upto(high) do |i| if arrInt[i] < middleValue then middle += 1 arrInt[i], arrInt[middle] = arrInt[middle], arrInt[i] end end arrInt[low], arrInt[middle] = arrInt[middle], arrInt[low] return middle end #end #test a = Array.new 0.upto(1000) {|i| a[a.length] = (Random.new.rand*10**2).to_i } quickSort(a) p a
相关文章推荐
- Ruby学习之路——编程实践【5】 选择排序
- Ruby学习之路——编程实践【4】 杨辉三角
- Ruby学习之路——编程实践【2】 打印出1到n的所有对称数
- Ruby学习之路——编程实践【4】(续) 杨辉三角,带格式输出
- 我的编程学习日志(8)--排序(冒泡,选择,快速以及sort函数)
- 我的编程学习日志(8)--排序(冒泡,选择,快速以及sort函数)
- 【Java学习之路】Java编程之判断素数
- 少儿编程的学习之路
- 软件测试实践之路:学习资料倾情奉献
- CCNP学习之路之RSTP快速生成树协议
- 算法学习笔记之快速排序
- Object-c学习之路八(NSArray(数组)遍历和排序)
- 我的网络编程学习之路——TCP(流)套接字的读和写
- Oracle学习之路(一):oracle简介+基本sql语句+条件查询+排序数据理论与案例
- 每天学习一点编程(6)(输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字)
- Android开发学习之路-RecyclerView滑动删除和拖动排序
- 《算法导论》学习摘要chapter-7——快速排序
- android学习二十四(网络编程的最佳实践)
- Unix-Linux编程实践 学习点滴
- 吴恩达 深度学习 Class1 课程总结及编程实践