diff --git a/sorts/pancake_sort.py b/sorts/pancake_sort.py new file mode 100644 index 000000000..26fd40b7f --- /dev/null +++ b/sorts/pancake_sort.py @@ -0,0 +1,16 @@ +# Pancake sort algorithm +# Only can reverse array from 0 to i + +def pancakesort(arr): + cur = len(arr) + while cur > 1: + # Find the maximum number in arr + mi = arr.index(max(arr[0:cur])) + # Reverse from 0 to mi + arr = arr[mi::-1] + arr[mi+1:len(arr)] + # Reverse whole list + arr = arr[cur-1::-1] + arr[cur:len(arr)] + cur -= 1 + return arr + +print(pancakesort([0,10,15,3,2,9,14,13])) diff --git a/sorts/tree_sort.py b/sorts/tree_sort.py new file mode 100644 index 000000000..94cf68033 --- /dev/null +++ b/sorts/tree_sort.py @@ -0,0 +1,45 @@ +# Tree_sort algorithm +# Build a BST and in order traverse. + +class node(): + # BST data structure + def __init__(self, val): + self.val = val + self.left = None + self.right = None + + def insert(self,val): + if self.val: + if val < self.val: + if self.left == None: + self.left = node(val) + else: + self.left.insert(val) + elif val > self.val: + if self.right == None: + self.right = node(val) + else: + self.right.insert(val) + else: + self.val = val + +def inorder(root, res): + # Recursive travesal + if root: + inorder(root.left,res) + res.append(root.val) + inorder(root.right,res) + +def treesort(arr): + # Build BST + if len(arr) == 0: + return arr + root = node(arr[0]) + for i in range(1,len(arr)): + root.insert(arr[i]) + # Traverse BST in order. + res = [] + inorder(root,res) + return res + +print(treesort([10,1,3,2,9,14,13])) \ No newline at end of file