//bubble sort
// Big O notation: O(n²)
//takes in array and array length
for i = 0 to array_length
for j = to array_length - i - 1
if array[j] > array[j+1]
swap array[j] with array[j+1]
//quick sort
// Big O notation: O(n log(n))
//takes in array and start index and end index
if start < end
result = partition(array, start, end)
recursively call self (array, start, result - 1)
recursively call self (array, result + 1,end)
//partition
//takes in array, low and high
//sets pivot to last element and moves it to correct
//position then move all elements less to pivot to
//its left and greater to its right
pivot = array[high]
index = low - 1
for j = 0, j less or equal to high - 1
if array[j] < pivot
index++
swap array[i] with array[j]
swap array[index + 1] with array[high]
return index + 1
//Merge Sort
// Big O notation: O(n log(n))
//takes in array, start and end
if start < end
mid = (start + end)//2
recursively call self (array, start, mid)
recursively call self (array, mid + 1,end)
merge(array, start, mid, end)
//merge
//takes in array, start, mid and end
index = 0
left = start
right = mid + 1
tempArray = []
while left <= mid && right <= end
if array[left] &t= array[right]
tempArray[index] = array[left]
left++
else
tempArray[index] = array[right]
right++
index++
if left > mid
for i = right, less or equal to end
tempArray[index++] = array[i]
else
for i = left, less or equal to mid
tempArray[index++] = array[i]
for k = 0 to array_length
array[start++] = tempArray[k]
return array
//Selection sort
// Big O notation: O(n²)
//takes in array
for i = 0 to array length
small = array[i]
pos = 0
for j = i + 1 to array length
if array[j] < small
small = array[j]
pos = j
swap array[pos] with array[i]