好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Ruby實現的各種排序算法

Ruby實現的各種排序算法

熱門標簽:百度地圖標注自定義圖片 白銀外呼paas系統 地圖標注賺錢項目注冊 常德電銷平臺外呼系統軟件價格 滴滴外呼系統 徐州網絡外呼系統哪個好 高德地圖標注客服 電銷機器人廠商代理 湖州u友防封電銷卡

時間復雜度:Θ(n^2)

Bubble sort

復制代碼 代碼如下:

def bubble_sort(a) 
  (a.size-2).downto(0) do |i| 
    (0..i).each do |j| 
      a[j], a[j+1] = a[j+1], a[j] if a[j] > a[j+1] 
    end 
  end 
  return a 
end

Selection sort

復制代碼 代碼如下:

def selection_sort(a) 
  b = [] 
  a.size.times do |i| 
    min = a.min 
    b min 
    a.delete_at(a.index(min)) 
  end 
  return b 
end

Insertion sort

復制代碼 代碼如下:

def insertion_sort(a) 
  a.each_with_index do |el,i| 
    j = i - 1 
      while j >= 0 
        break if a[j] = el 
        a[j + 1] = a[j] 
        j -= 1 
      end 
    a[j + 1] = el 
  end 
  return a 
end 

 Shell sort
 

復制代碼 代碼如下:

def shell_sort(a) 
  gap = a.size 
  while(gap > 1) 
    gap = gap / 2 
    (gap..a.size-1).each do |i| 
      j = i 
      while(j > 0) 
        a[j], a[j-gap] = a[j-gap], a[j] if a[j] = a[j-gap] 
        j = j - gap 
      end 
    end 
  end 
  return a 
end

時間復雜度:Θ(n*logn)

Merge sort

復制代碼 代碼如下:

def merge(l, r) 
  result = [] 
  while l.size > 0 and r.size > 0 do 
    if l.first r.first 
      result l.shift 
    else 
      result r.shift 
    end 
  end 
  if l.size > 0 
    result += l 
  end 
  if r.size > 0 
    result += r 
  end 
  return result 
end 
 
def merge_sort(a) 
  return a if a.size = 1 
  middle = a.size / 2 
  left = merge_sort(a[0, middle]) 
  right = merge_sort(a[middle, a.size - middle]) 
  merge(left, right) 
end 

Heap sort

復制代碼 代碼如下:

def heapify(a, idx, size) 
  left_idx = 2 * idx + 1 
  right_idx = 2 * idx + 2 
  bigger_idx = idx 
  bigger_idx = left_idx if left_idx size a[left_idx] > a[idx] 
  bigger_idx = right_idx if right_idx size a[right_idx] > a[bigger_idx] 
  if bigger_idx != idx 
    a[idx], a[bigger_idx] = a[bigger_idx], a[idx] 
    heapify(a, bigger_idx, size) 
  end 
end 

def build_heap(a) 
  last_parent_idx = a.length / 2 - 1 
  i = last_parent_idx 
  while i >= 0 
    heapify(a, i, a.size) 
    i = i - 1 
  end 
end 
 
def heap_sort(a) 
  return a if a.size = 1 
  size = a.size 
  build_heap(a) 
  while size > 0 
    a[0], a[size-1] = a[size-1], a[0] 
    size = size - 1 
    heapify(a, 0, size) 
  end 
  return a 
end 

Quick sort

復制代碼 代碼如下:

def quick_sort(a) 
  (x=a.pop) ? quick_sort(a.select{|i| i = x}) + [x] + quick_sort(a.select{|i| i > x}) : [] 
end 

時間復雜度:Θ(n)

Counting sort

復制代碼 代碼如下:

def counting_sort(a) 
  min = a.min 
  max = a.max 
  counts = Array.new(max-min+1, 0) 
 
  a.each do |n| 
    counts[n-min] += 1 
  end 
 
  (0...counts.size).map{|i| [i+min]*counts[i]}.flatten 
end 

Radix sort

復制代碼 代碼如下:

def kth_digit(n, i) 
  while(i > 1) 
    n = n / 10 
    i = i - 1 
  end 
  n % 10 
end 
 
def radix_sort(a) 
  max = a.max 
  d = Math.log10(max).floor + 1 
 
  (1..d).each do |i| 
    tmp = [] 
    (0..9).each do |j| 
      tmp[j] = [] 
    end 
 
    a.each do |n| 
      kth = kth_digit(n, i) 
      tmp[kth] n 
    end 
    a = tmp.flatten 
  end 
  return a 
end 

Bucket sort
復制代碼 代碼如下:

def quick_sort(a) 
  (x=a.pop) ? quick_sort(a.select{|i| i = x}) + [x] + quick_sort(a.select{|i| i > x}) : [] 
end 
 
def first_number(n) 
  (n * 10).to_i 
end 
 
def bucket_sort(a) 
  tmp = [] 
  (0..9).each do |j| 
    tmp[j] = [] 
  end 
   
  a.each do |n| 
    k = first_number(n) 
    tmp[k] n 
  end 
 
  (0..9).each do |j| 
    tmp[j] = quick_sort(tmp[j]) 
  end 
 
  tmp.flatten 
end 
 
a = [0.75, 0.13, 0, 0.44, 0.55, 0.01, 0.98, 0.1234567] 
p bucket_sort(a) 
 
# Result:  
[0, 0.01, 0.1234567, 0.13, 0.44, 0.55, 0.75, 0.98] 

您可能感興趣的文章:
  • ruby實現的插入排序和冒泡排序算法
  • Ruby實現的矩陣連乘算法
  • Ruby實現二分搜索(二分查找)算法的簡單示例
  • Ruby實現的3種快速排序算法
  • Ruby實現的合并排序算法
  • Ruby實現的最優二叉查找樹算法
  • Ruby實現的圖片濾鏡算法代碼

標簽:梧州 荊門 永州 公主嶺 遼寧 三沙 張家界 普洱

巨人網絡通訊聲明:本文標題《Ruby實現的各種排序算法》,本文關鍵詞  Ruby,實現,的,各種,排序,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby實現的各種排序算法》相關的同類信息!
  • 本頁收集關于Ruby實現的各種排序算法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 自愉自愉产区一区| 美女视频黄a全部免费看小说| 色综合天天综合高清影视| 男女无遮挡120动态图看光了| 理伦片在线看理伦片| 国精产品一区一区三区公司背景 | 78w乳液78w78w| 国产乱码精品一区二区| 国产农村一级特黄妇女A片一 | 国产成人99精品免费视频麻豆| 韩国做受???高潮95| 灯草和尚2白蛇前传| 色哟哟一区二区三区精华液| 真人一级毛片免费播放98| yy6080久久国产伦理| 亚洲AV秘?无码一区坂井成羽| 男人的j进女人的p视频网站| 男受每天含着高H女攻| 老师的丰满大乳奶水四溅| 折磨尿孔调教尿奴惩罚憋尿| 日本高清xxxx视频18| 欧美历史大片免费播放| 艳降勾魂未删减完整版下载bt| 年龄大男主h肉全文| gogogo高清在线播放免费观看如果奔跑是 | 同桌张开腿让我爽了一夜| 领导扒开我奶罩吸我奶头视频| 狂野小农民未删减在线观看免费 | 乘风破浪的姐姐第四季在线免费观看| 双性受被粗人糟蹋np| 国产一级****爱做毛片| 好长?好硬?受不了?描写| 色戒未删减完整版电影| 精品女同一区二区三区在线播放| 欧美AV色香蕉一区二区蜜桃小说| 国产网红精品| juliaann疯狂作爱| 97伦伦午夜电影理伦片按摩技师| 国产欧美日产久久| 国产精品久久久久久久蜜臀宾利| www.天天操.com|