国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Ruby > 正文

Ruby實(shí)現(xiàn)的各種排序算法

2020-10-29 19:39:07
字體:
供稿:網(wǎng)友

時(shí)間復(fù)雜度:Θ(n^2)

Bubble sort

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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
 

復(fù)制代碼 代碼如下:

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

時(shí)間復(fù)雜度:Θ(n*logn)

Merge sort

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

時(shí)間復(fù)雜度:Θ(n)

Counting sort

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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
復(fù)制代碼 代碼如下:

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] 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
最近中文字幕mv2018在线高清| 免费网站看黄yyy222| 欧美亚洲系列| 久热精品免费视频| 最近中文字幕mv免费高清视频8| 国产免费一级片| 国产h在线观看| 四虎成年永久免费网站| 国产在线视频网站| 国产青草视频在线观看视频| av在线1区2区| 免费99热在线观看| 国产一二区在线| www黄在线观看| 国产精品麻豆一区二区三区| 青青草视频在线免费观看| 欧美性受xxxx免费视频| 国产日韩精品在线看| 开心婷婷激情| 四虎一区二区三区| 国产精品777一区二区| 免费网站看黄yyy222| 国产成人天天5g影院| 九九热在线播放| 亚洲xxxxxx| 伊人国产在线看一| 国产精品久久人| 国产日韩欧美一区二区三区视频| jlzzjlzz欧美大全| 精品欧美日韩一区二区| 国产小视频在线观看| 午夜羞羞小视频在线观看| 国产小视频在线| 二人午夜免费观看在线视频| www免费在线观看| 四虎精品视频| 日本黄在线观看| 欧美性受xxxx免费视频| 午夜在线视频| 天天干天天操天天爽| 91精品专区| 精品视频一区二区观看| 精品推荐国产麻豆剧传媒| 国产黄色在线看| √天堂资源中文www| 国产h在线观看| 99爱在线观看| 999福利在线视频| 18激情网站| 一色桃子av在线| www.大网伊人| 国产麻豆综合视频在线观看| 国产理论电影在线观看| 国产一区二区三区美女秒播| 国产无遮挡在线视频免费观看| 最近免费中文字幕在线第一页| 中文字幕色视频| 在线天堂中文www视软件| 亚洲欧美日韩成人网| 超碰免费在线| 国产福利一区二区在线精品| 亚洲国产精华液| 九九视频在线播放| 国产一级在线观看www色| 精品视频二区| 国产九色在线| 四虎成人精品在永久在线观看| 黄网在线免费| 97视频免费| 黄色一级片视频| 97国产视频| 日本中文字幕高清视频| 亚洲视频精品在线观看| 国产亚洲精品久久久久久移动网络 | 天天草天天干| 高清欧美精品xxxxx在线看| 国产欧美在线观看视频| 亚洲精品手机在线| 最近中文字幕在线中文视频| av三级在线观看| 国产国语**毛片高清视频| 超碰免费在线观看| 99在线免费观看| 综合激情丁香| 超碰国产在线观看| 精品推荐国产麻豆剧传媒| 国产在线一二三| 天堂在线国产| 在线观看电影av| 国产精品伦理一区二区三区| 欧美日韩亚洲第一页| 91欧洲在线视精品在亚洲| 午夜视频99| 国产秒拍福利视频露脸| 九九热在线观看视频| www.xxx黄| 天天插天天操| a视频免费看| 欧美啪啪精品| 九九热视频精品在线观看| 夜夜爽夜夜操| 亚洲国产精品区| av在线网页| 日本福利在线| 老师我好爽再深一点的视频| 免费a级毛片在线观看| 欧美黑人乱大交| 久草一本av| 国产一级大片| 国产特黄在线| 国产成在线观看免费视频| 在线视频99| 美女网站在线观看| 最近中文字幕mv2018在线高清| 国产一区二区三区不卡免费观看 | 国产在线视频福利| 天堂中文在线视频| 国产精品乱码一区二区三区视频 | 91午夜在线| 男女羞羞视频在线观看| 国自产拍在线网站网址视频| 国产黄在线播放| 麻豆电影传媒二区| 中文字幕在线免费| 一本大道五月香蕉| 狠狠操五月天| 18 激情视频在线| av在线网页| 国产特级嫩嫩嫩bbb| 亚洲欧美精品中文第三| 国产美女福利在线观看| 一级黄色av| 国产偷窥老熟盗摄视频| www.狠狠艹| 精品推荐蜜桃传媒| 中文字幕在线观看av| www在线播放| 国产高清免费在线播放| 青青草视频在线观看| 国产videos| 午夜国产视频| 二区三区中文字幕| www.操操操| 思思99精品视频在线观看| 国产日本视频| 天堂中文资源在线| 好男人免费精品视频| 天堂√中文在线| 精品av中文字幕在线毛片| 国产网站免费观看| 中文字幕亚洲精品视频| 久热中文字幕| 日本欧洲一区| 精品美女调教视频| 国产精品yjizz视频网一二区 | 国产有码在线| 国产在线色视频| 狠狠操五月天| 中文字幕在线影视资源| 成年网站免费入口在线观看| 天天艹天天操| а√天堂8资源在线官网| av在线不卡网站| 免费av在线| 五月亚洲综合| 国产精品入口麻豆免费| 国产精品外围在线观看| 国内外激情在线| 天堂在线视频| 国产高潮又爽又无遮挡又免费| 国产98在线| 免费男女羞羞的视频网站中文字幕| 免费中文字幕| 国产精品视频h| 亚洲国产成人综合| 国产免费网址| 精品入口麻豆传煤| 九九热免费在线视频| 国产三级视频在线播放线观看| 在线中文字幕第一页| 麻豆电影传媒二区| 国产网友自拍视频导航网站在线观看| 最近最好的中文字幕2019免费| 国产黄色免费网| 久久亚洲国产成人亚| 国产精品冒白浆免费视频 | 羞羞视频在线免费看| 浪潮av一区| 91美女主播在线视频| 久久久久久久久亚洲精品| 国产亚洲精品午夜高清影院| 99re6在线视频精品免费| 久久er视频| 在线黄色国产电影| 国产麻豆一级片| 亚洲www色| 91在线中文| 国产精品入口麻豆电影| 九色视频网站| gogo在线高清视频|