Fu Fundamentals of Pr Programming (Py Python)
Search and Sorting Algorithms
Ali Taheri Sharif University of Technology
Spring 2019
Some slides have been adapted from βPython Programming: An Introduction to Computer Scienceβ
Search and Sorting Algorithms Ali Taheri Sharif University of - - PowerPoint PPT Presentation
Fu Fundamentals of Pr Programming (Py Python) Search and Sorting Algorithms Ali Taheri Sharif University of Technology Spring 2019 Some slides have been adapted from Python Programming: An Introduction to Computer Science Outline 1.
Spring 2019
Some slides have been adapted from βPython Programming: An Introduction to Computer Scienceβ
2
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
3
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
nums = [3, 1, 4, 2, 5] x = int(input()) if x in nums: # do something i = nums.index(x)
4
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def search(x, nums): for i in range(len(nums)): if nums[i] == x: # item found, return the index value return i return -1 # loop finished, item was not in list
5
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
6
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def binary_search(x, num, low, high): if low >= high: return -1 mid = (low + high) // 2 if num[mid] == x: return mid elif num[mid] > x: return binary_search(x, num, low, mid) else: return binary_search(x, num, mid+1, high)
7
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def binary_search(x, nums): low = 0 high = len(nums) while low < high: mid = (low + high) // 2 if num[mid] == x: return mid elif x < nums[mid]: high = mid - 1 else: low = mid + 1 return -1
π 2
8
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
9
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> nums = [3, 1, 4, 2, 5] >>> nums.sort() >>> nums [1, 2, 3, 4, 5]
10
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
11
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def selection_sort(nums, begin): # sort nums into ascending order n = len(nums) # Base Case if begin == n - 1: return # find the smallest item in nums[begin]..nums[n-1] mp = begin # begin is smallest initially for i in range(begin + 1, n): # look at each position if nums[i] < nums[mp]: # this one is smaller mp = i # remember its index # swap smallest item to the begin nums[begin], nums[mp] = nums[mp], nums[begin] selection_sort(nums, begin + 1)
12
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
13
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
14
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def merge_sort(nums): n = len(nums) if n <= 1: return mid = n // 2 lower = nums[:mid] upper = nums[mid:] merge_sort(lower) merge_sort(upper) merge(lower, upper, nums)
15
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
def merge(lower, upper, nums): nums.clear() i, j = 0, 0 while i < len(lower) and j < len(upper): if lower[i] <= upper[j]: nums.append(lower[i]) i += 1 else: nums.append(upper[j]) j += 1 while i < len(lower): nums.append(lower[i]) i += 1 while j < len(upper): nums.append(upper[j]) j += 1
π 2
16
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019