Quick Sort in Ruby language

后端 未结 4 564
甜味超标
甜味超标 2020-12-18 05:03

I am trying to implement Quick sort in ruby but stuck in how to call recursively after the first partition of pivot. Please help me to understand on how to proceed and also

4条回答
  •  天涯浪人
    2020-12-18 05:41

    Here is my version of Quicksorting

    class QuickSort
       def partition(arr, low ,high) 
         pivot = arr[high]  
         i = low 
         for j in low...high 
           if arr[j] < pivot
              temp = arr[i]
              arr[i] = arr[j]
              arr[j] = temp
              i = i+1
           end
         end
         temp = arr[i]
         arr[i] = arr[high]
         arr[high] = temp 
         return i
       end
    
       def sort(arr, low, high) 
         if (low < high) 
            pi = partition(arr, low, high)
            sort(arr, low, pi-1)
            sort(arr, pi+1, high)
         end
         arr
       end
    end
    arr = [10, 5, 80, 30, 100, 140, 90, 40, 50, 70, 72, 150, 63] 
    n = arr.length
    qs = QuickSort.new
    arr = qs.sort(arr, 0, n-1)
    puts "Quick Sorted Array ==>#{arr}"
    #Quick Sorted Array ==>[5, 10, 30, 40, 50, 63, 70, 72, 80, 90, 100, 140, 150]
    

提交回复
热议问题