兩個有序數組合並成一個新的有序數組


兩個有序數組合並成一個新的有序數組,不用系統的API,其實有多種方法可以實現。

1.先把兩個有序數組合並成一個新的數組,再進行排序,使其成為一個新的有序數組,此方法程序可以運行,但應該不算是最優的方法。

a = [1,5,9,10]
b = [2,6,7]
c=[]
for i in 0..a.length-1
  c<<a[i]
end
for i in 0..b.length-1
  c<<b[i]
end
for i in 0..c.length-2
  for j in 0..c.length - i -2
    if c[j]>c[j+1]
      temp = c[j]
      c[j] = c[j+1]
      c[j+1] = temp
    end
  end
end
p c

2.對兩個有序數組進行比較,然后依次放入一個新的數組中去,只用一次循環,就生成一個新的有序數組,不知道是不是最優方法,歡迎大家給出最優的方法:

a = [1,5,9,10,10]
b = [2,6,7]
c=[]
a1 = 0
b1 = 0
d = a.length+b.length-1
for i  in 0..d
  if a[a1] != nil and b[b1] != nil
    if a[a1]<b[b1]
      c<<a[a1]    
      a1 = a1 +1     
    else
      c<<b[b1]   
      b1 = b1 + 1       
    end
  else
    if a[a1] == nil and b[b1] != nil
      c<<b[b1] 
      b1 = b1 + 1
    end
    if b[b1] == nil and a[a1] != nil
      c<<a[a1] 
      a1 = a1 + 1
    end
  end
end
p c

 3.加一種群里小黑寫的,我個人認為有點類似於冒泡排序:

a = [1,5,9,10,32,43,453,1324,3213,3213,3214,3215]
b = [2,6,7,10,13,15,1314,1315,312314]
c=[]
n=0
for i in 0...a.length do
     for j in n...b.length do
              if a[i]>b[j]
                c<<b[j]
                n=n+1                      
              end
     end
 c<<a[i]
end
p c

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM