用ruby擼代碼——選擇排序算法

最近雙十一,公司趕上線新功能,忙瘋了,終于忙里偷閑擼一下ruby代碼,新手入坑,勿噴!

新源代碼:(多重賦值節(jié)省代碼)

$array = [21, 35, 33, 41, 16, 6]

def select_rank(arr)
  arr.each_with_index do |item, index|
    init_index = index
    inner_arr = arr[index + 1, arr.length - index]
    inner_arr.each_with_index do |i, idx|
      min_num = item
      min_index = init_index
      if min_num > i
        min_index = idx + index + 1
        min_num = arr[min_index]
      end
      arr[init_index], arr[min_index] = arr[min_index], arr[init_index]
    end
  end
end

原源代碼:

$array = [21, 35, 33, 41, 16, 6]

def select_rank(arr)
  arr.each_with_index do |item, index|
    init_index = index
    inner_arr = arr[index+1, arr.length - index]
    inner_arr.each_with_index do |i, idx|
      min_num = item
      min_index = init_index
      if min_num > i
        min_index = idx + index + 1
        min_num = arr[min_index]
      end
      select_change_position($array, init_index, min_index)
    end
  end
end
def select_change_position (arr, init_index, min_index)
  arr_store = arr[init_index]
  arr[init_index] = arr[min_index]
  arr[min_index] = arr_store
end

p "原始數(shù)組",$array
select_rank($array)
p "排序后數(shù)組",$array

結(jié)果:

"原始數(shù)組"
[21, 35, 33, 41, 16, 6]
"排序后數(shù)組"
[6, 16, 21, 33, 35, 41]

總結(jié):

  • 使用到的知識包括:循環(huán)語句、全局變量、局部變量、函數(shù)定義方法、打印功能、if判斷語句、數(shù)組的相關(guān)方法等;
  • 實(shí)現(xiàn)方式相對簡單,有待打磨代碼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容