兩個有序數組合並成一個新的有序數組,不用系統的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
