冒泡&选择排序
快排两种写法,第一种用ruby的partition,简短,第二种为常规快排写法
arr1 = [4, 6, 2, 7, 1, 3, 8, 9, 5, 0]
arr2 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]
arr3 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]
arr4 = [8, 12, 4, 14, 2, 6, 16, 18, 10, 20]
#冒泡——两两比较,发现两元素的次序相反时即交换
def bubble_sort(arr)
0.upto(arr.length - 1) do |i|
1.upto(arr.length - 1 - i) do |j|
if ( arr[j-1] > arr[j] )
tmp = arr[j-1]
arr[j-1] = arr[j]
arr[j] = tmp
end
end
end
end
bubble_sort(arr1)
p arr1
#选择排序——每次从待排数据汇总选出最值,放在已拍好的序列最后
def selection_sort(arr)
0.upto(arr.length - 2) do |i|
(i+1).upto(arr.length - 1) do |j|
if(arr[i] > arr[j])
tmp = arr[i]
arr[i] = arr[j]
arr[j] = tmp
end
end
end
end
insert_sort(arr2)
p arr2
#快排——ruby方法partition ——选择一基准元素,划分左右两个无序区间,该基准元素放在其最终位置