麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:34:42
字體:
來源:轉載
供稿:網友

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

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 enda=[5,2,6,4,7,9,8]insertSort(a)print a
[2, 4, 5, 6, 7, 8, 9]>Exit code: 0

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

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路插入排序基于折半插入排序:

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 resultenddata = [4,1,5,6,7,2,9,3,8].shufflep dataresult = two_way_sort datap result

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99re热视频这里只精品 | 久久久一区二区三区精品 | 黄色免费影片 | 午夜伦情电午夜伦情电影 | 色日本视频| 98国内自拍在线视频 | 国产免费一区二区三区在线能观看 | 成人免费av在线播放 | 精品麻豆cm视频在线看 | 91九色免费视频 | 色天使中文字幕 | 999久久久精品 | 免费看成年人网站 | 欧美一级片网站 | 免费国产精品视频 | 亚洲二区三区在线 | 欧产日产国产精品99 | 999久久久 | 成年免费看 | 蜜桃网站免费 | 天天鲁在线视频免费观看 | 日本欧美一区二区三区在线观看 | 国产精品视频一区二区三区综合 | 久久久久久久久久久久免费 | 在线播放视频一区二区 | 精品无码久久久久久国产 | 精品一区二区三区电影 | 爱操视频 | 午夜视频国产 | 99re热视频这里只精品 | 亚洲午夜1000理论片aa | 欧美 国产 亚洲 卡通 综合 | 国产成人综合在线观看 | 欧美高清一级片 | 久久精品久 | 欧美黄色大片免费观看 | 少妇淫片免费一级毛片 | 久久久电影电视剧免费看 | 黄污网站在线 | 懂色av懂色aⅴ精彩av | 亚洲成人精品区 |