# Three quick sorting algorithms implemented by ruby

Time：2022-4-27

When I first learned ruby, it happened that the algorithm teacher encouraged me to write algorithms in unfamiliar languages. I’ll use ruby~~
Ruby is really powerful. Many intuitive methods can be used….. Worship infinity….

During this period, I encountered the error of invalid multibyte char (us-ascii). The solution is to add a #encoding: UTF-8 at the beginning
This error has been asked on stack overflow, and someone’s answer is
Write # encoding: utf-8 on top of that file. That changes the default encoding of all string/regexp literals in that file utf-8.

Normal version of quick sort:

Copy codeThe code is as follows:

#encoding: utf-8
#author: xu jin, 4100213
#date: Oct 20, 2012
#RandomizedQuickSort
#to sort an array by using QuickSort
#example:
#The original array is：[10, 35, 25, 67, 69, 52, 24, 40, 69, 76, 6, 49]
#The sorted array is: [6, 10, 24, 25, 35, 40, 49, 52, 67, 69, 69, 76]

arrayInt = Array.new
index = 0
while (index < 12)
arrayInt[index] = rand(100)  #produce 12 random number
index += 1
end
puts “The original array is：” + arrayInt.to_s

def QuickSort(arrayInt, first, last)
if first < last
middle = Partition(arrayInt, first, last)
QuickSort(arrayInt, first, middle – 1)
QuickSort(arrayInt, middle + 1, last)
end
end

def Partition(arrayInt, first, last)
x = arrayInt[last]
i = first – 1
for j in first .. (last – 1)
if arrayInt[j] <= x
i += 1
arrayInt[i], arrayInt[j] = arrayInt[j], arrayInt[i]  #exchange
end
end
arrayInt[i + 1], arrayInt[last] = arrayInt[last], arrayInt[i + 1]
return i + 1
end

QuickSort(arrayInt, 0, arrayInt.length-1)
puts “The sorted array is: ” + arrayInt.to_s

Randomized version of quick sort:

Copy codeThe code is as follows:

#encoding: utf-8
#author: xu jin, 4100213
#date: Oct 20, 2012
#RandomizedQuickSort
#to sort an array by using randomized QuickSort
#example:
#The original array is：[14, 47, 46, 49, 82, 76, 92, 22, 44, 81, 59, 61]
#The sorted array is: [14, 22, 44, 46, 47, 49, 59, 61, 76, 81, 82, 92]

arrayInt = Array.new
index = 0
while (index < 12)
arrayInt[index] = rand(100)  #produce 12 random number
index += 1
end
puts “The original array is：” + arrayInt.to_s

def RandomizedQuickSort(arrayInt, first, last)
if first < last
middle = RandomizedPartition(arrayInt, first, last)
RandomizedQuickSort(arrayInt, first, middle – 1)
RandomizedQuickSort(arrayInt, middle + 1, last)
end
end

def RandomizedPartition(arrayInt, first, last)
i = rand(last – first + 1) + first
arrayInt[i], arrayInt[last] = arrayInt[last], arrayInt[i]
return Partition(arrayInt, first, last)
end

def Partition(arrayInt, first, last)
x = arrayInt[last]
i = first – 1
for j in first .. (last – 1)
if arrayInt[j] <= x
i += 1
arrayInt[i], arrayInt[j] = arrayInt[j], arrayInt[i]  #exchange
end
end
arrayInt[i + 1], arrayInt[last] = arrayInt[last], arrayInt[i + 1]
return i + 1
end

RandomizedQuickSort(arrayInt, 0, arrayInt.length-1)
puts “The sorted array is: ” + arrayInt.to_s

The randomization version of quick sort uses Ruby syntax sugar:

Copy codeThe code is as follows:

#encoding: utf-8
#author: xu jin, 4100213
#date: Oct 20, 2012
#RandomizedQuickSort
#to sort an array by using randomized QuickSort
#example:
#The original array is：[14, 47, 46, 49, 82, 76, 92, 22, 44, 81, 59, 61]
#The sorted array is: [14, 22, 44, 46, 47, 49, 59, 61, 76, 81, 82, 92]

arrayInt = Array.new
index = 0
while (index < 12)
arrayInt[index] = rand(100)  #produce 12 random number
index += 1
end
puts “The original array is：” + arrayInt.to_s

def RandomizedQuickSort(a)
i = rand(a.length)
a[i], a[a.length – 1] = a[a.length – 1], a[i]
(x=a.pop) ? RandomizedQuickSort(a.select{|i| i <= x}) + [x] + RandomizedQuickSort(a.select{|i| i > x}) : []
end

puts “The sorted array is: ” + RandomizedQuickSort(arrayInt).to_s

## Encapsulating websql (VII) encapsulating paging and query

Although there are many ways of paging now, unlike before, you can only turn by page, but the basic principle is the same. The paging of websql is relatively simple (regardless of performance), because limit can be used. SQL select * from table where xxx order by xxxx limit 0,10 encapsulation /** *Paging to obtain […]