国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - Ruby實現插入排序算法及進階的二路插入排序代碼示例

Ruby實現插入排序算法及進階的二路插入排序代碼示例

2020-05-11 10:15織田信長 Ruby

插入排序即是把已有的有序序列從后向前掃描插入元素,數值大的向后移動,這里我們就來看一下使用Ruby實現插入排序算法及進階的二路插入排序代碼示例

基礎
將一個記錄插入到一個已經排序好的表中,以得到一個記錄增一的有序表。并且最關鍵的一點就是它把比當前元素大的記錄都往后移動,用以空出“自己”該插入的位置。當n-1趟插入完成后該記錄就是有序序列。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def insertSort(tarray)
  i=1
  while(i < tarray.size) do
   if tarray[i] < tarray[i-1]
     j=i-1
     x=tarray[i]
   #puts x.class
   #puts tarray[i].class
     tarray[i]=tarray[i-1]#先與左側第一個比自己大的交換位置
     while(x< tarray[j].to_i) do#尋找到一個比自己小的,并放在其后
      tarray[j+1]=tarray[j]
      #puts tarray[j].class
      j=j-1
     end
     tarray[j+1]=x
   end
   i=i+1
  end
 end
 
a=[5,2,6,4,7,9,8]
insertSort(a)
print a
?
1
[2, 4, 5, 6, 7, 8, 9]>Exit code: 0

剛開始寫代碼時,在x< tarray[j]處沒有加to_i方法,出現了如下錯誤:

?
1
final.rb:10:in `<': comparison of Fixnum with nil failed (ArgumentError)

一開始我很困惑,便在輸出了x.class,tarray[j].class,然而這兩的輸出都是Fixnum。后來發現,Ruby的Array類和其他的不太一樣,Ruby中允許一個Array對象中存儲不同類型的元素,當a的一個元素賦值給x后,無法確定與x比較的a[i]是否是Fixnum類型,所以報錯,這只是我自己的理解。

進階
2路插入排序基于折半插入排序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
def two_way_sort data
 first,final = 0,0
 temp = []
 temp[0] = data[0]
 result = []
 len = data.length
 
 for i in 1..(len-1)
  if data[i]>=temp[final]
   final +=1
   temp[final] = data[i]
  elsif data[i]<= temp[first]
   first = (first -1 + len)%len
   temp[first] = data[i]
  else
   if data[i]<temp[0]
    low = first
    high = len -1
   
    while low <=high do
     m = (low + high)>>1
     if data[i]>temp[m]
      low = m + 1
     else
      high = m -1
     end
    end
    
    j = first - 1
    first -=1
    while j < high do
     temp[j] = temp[j+1]
     j +=1
    end
 
    temp[high] = data[i]
   else
    low =0
    high = final
 
    while low <=high do
     m =(low + high)>>1
 
     if data[i]>=temp[m]
      low = m + 1
     else
      high = m - 1
     end
    end
 
    j = final + 1
    final +=1
 
    while j > low do
     temp[j] = temp[j-1]
     j -=1
    end
 
    temp[low] = data[i]
   end
  end
  p temp
 end
 
 i = 0
 for j in first..(len - 1)
  result[i] = temp[j]
  i +=1
 end
 
 for j in 0..final
  result[i] = temp[j]
  i +=1
 end
 
 return result
end
 
 
data = [4,1,5,6,7,2,9,3,8].shuffle
 
p data
 
result = two_way_sort data
 
p result

延伸 · 閱讀

精彩推薦
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久一区二区三区 | 久久久久久免费毛片精品 | 91免费在线视频 | 久久精品伊人 | 久久久一区二区三区 | 成年人视频免费在线看 | 国产激情一区二区三区成人免费 | 欧美精品一二三区 | 99亚洲| 在线精品一区二区 | 日韩欧美一区二区三 | 成人日韩在线观看 | 一本大道香蕉大a√在线 | 精品国产一区探花在线观看 | 91仓库 | 免费观看www7722午夜电影 | 国产精品99久久免费观看 | 欧美一级二级三级视频 | 欧美一级大片免费 | 精品视频久久久 | 成av在线 | 中文字幕精品一区 | 亚洲精品视频在线观看免费视频 | 国产最新精品 | 欧美黑人一级爽快片淫片高清 | 亚洲精品电影在线观看 | 欧美日韩干 | 午夜小电影 | hh99me在线观看 | 色噜噜狠狠狠综合曰曰曰 | 日韩精品一区二区三区在线 | 国产精品一区二区三区四区 | 日韩欧美一区二区三区 | 欧美综合影院 | 国产一区二区三区视频 | 亚洲伦理一区二区 | 欧美亚洲国产一区 | 日本中文字幕在线观看 | 亚洲精品久久久久久动漫 | 91精品国产综合久久久久久丝袜 | 玖玖综合网 |