Guide to High School Computer Science
  • 💻Introduction
    • windows & Python Development
    • macOS & Python Development
    • Visual Studio Code Settings
    • Set up Github
    • Author Page
  • 🧠Prerequisite Skills
    • Keyboard Typing
    • Files & Directories
    • Use of Command Line
    • Git & GitHub
    • Markdown
    • Starting Your Python Project
  • 🐍Python Programming
    • 🍎Python Basics
      • What is Python?
      • Procedural Programming & Programming Paradigms
      • String Formatting
      • Data Types
      • Input & Output to Console
      • Working with Numbers
      • Useful Built-in Functions
      • Math & Random Module
      • Boolean Data Object
      • Comparison, Logical, and Membership Operators
      • If Statements
      • Binary Decisions
      • Multiple Decisions
      • Nested Conditions
      • [EXTRA] Bitwise Operators
      • [EXTRA] Python Style Guide
    • ⏮️Iterations
      • Introduction to While Loops
      • Infinite Loop
      • Controlling Your While Loops
      • Introduction to For Loops
      • For Loops w/ Numeric Sequences
      • For Loops w/ Strings & Lists
      • Iterable Functions w/ For Loops
    • 📦Collections
      • Strings
        • String Basics
        • String Indexing
        • String Slicing
        • String Operators & Functions
        • Basic String Methods
        • String Methods Extended
        • String Methods Document
      • Tuples & Lists
        • Tuples
        • List Basics
        • List are Mutable
        • Adding Items to a List
        • Removing Items from a List
        • Search & Reverse a List
        • List Comprehension
        • List Methods Document
      • Sets
      • Dictionary
      • How to Store Multiple Data Items
    • 💡Defining Functions
      • Functions
      • print() vs return
      • Pre-determined Arguments
      • Nested Functions
      • Map & Filter
      • [Extra] Dynamic Arguments
    • 💾File I/O
      • How to Save Text to an External File
      • Reading CSV in Python
      • Reading JSON in Python
    • 🔨Basic Python Projects
      • Basic Calculator
        • Improving the calculator
        • Exercise Set 1
        • Exercise Set 2
        • 💎Streamlit Application #1
      • Basic Password Generator
        • Exercise Set 3
        • Exercises Related to Math
        • 💎Streamlit Application #2
      • A To-Do Task List
    • ⏳Introduction to Algorithmic Thinking
      • Big-O Notation
      • Basic Algorithms
        • Linear Search
        • Binary Search
        • Basic Sorting Algorithms
      • Recursion
      • Brute Force Algorithms
      • Greedy Algorithm
        • Time on Task (CCC 2013 J4)
        • Dijkstra’s Algorithm
      • Divide and Conquer
        • Merge Sort
      • Dynamic Programming
    • 🤯Object Oriented Programming
      • Class & Objects (Definitions)
      • OOP in Python
      • Encapsulation
      • Polymorphism
      • Inheritance & Overriding
      • Override Magic Methods
      • Case Study: 2D Vectors
      • Case Study: Deck of Cards
      • Exercise
      • Abstract Data Types
      • Case Study: Static 1D Array From Java
    • Competitive Programming
      • Is This Sum Possible?
        • Is the dataset sorted?
        • Searching for a value
        • Determine if the difference between an integer from the array and the target value exists
        • Sorting Algorithms
        • Using Two Pointers
      • Two Sum - LeetCode
        • Generate all possible pairs of values
        • Subtract each value from the target, see if the difference exists in the list
      • Longest Common Prefix - LeetCode
        • Compare all possible prefixes
        • Create the longest common prefix with the direct neighbour
      • Length of Last Word - LeetCode
        • Compare all possible prefixes
      • Where can I go from one point to another?
      • Sample Outline
    • IB Recipe Book
  • 💾Python & Databases
    • Intro to Databases & Data Modeling
      • Common Data Types in SQL
      • Introduction to ERDs
      • Primary Keys and Foreign Keys
      • Database Normalization
    • What is SQL?
      • Getting Started
      • SELECT Queries
        • Selection with Conditions
        • Selection with Fuzziness
        • Selection and Sorting in Order
        • Selection without Duplicates
        • Selection with Limited Number of Outputs
      • AGGREGATE Queries
        • Counting Rows
        • Sum, Average, Min/Max Queries
        • Working with Aggregate Queries
        • Power of using Groups
        • Exercise
      • Interacting with Multiple Table
      • Inserting Data
      • External Resource
  • ☕Java Essentials
    • Basics
      • Starting Java
      • Data & Variables
      • Handling User Inputs & Type Conversion
      • Arithmetic
      • IPO Model
      • Basic Built-in Methods
      • Exercise Questions
    • Conditionals
      • Boolean Operators
      • Compare Strings
      • If Statements
      • If Else Statements
      • Making Multiple Decisions
      • Using Switch
      • Flowchart Symbols
      • Exercise Questions
    • Iterations
      • While Loops
      • For Loop
      • Exercises
    • Java Type Casting
    • Strings
      • Common String Practices
      • String Formatting
      • Java Special Characters
    • Collection
      • Arrays
      • For Each Loop
      • ArrayList
      • Exercise Questions
    • Static Methods
      • (Aside) Clearing your Console
    • Randomness in Java
    • Delayed Output in Java
    • Java Output Formatting
    • Java Style Guide
  • 🛠️JavaScript Programming
    • Our Programming Editor & Workflow
      • Hello, world!
      • Commenting & Variables
      • Data in JavaScript
      • Operators
      • String Formatting
      • Getting User Input
    • JavaScript Exercise Set 1
    • Making Decisions
      • Comparing Values
      • Combining Boolean Comparisons
      • Creating Branches
    • JavaScript Exercise Set 2
    • While Loops
      • Infinite While Loop
      • While Loops and Numbers
      • While Loops and Flags
      • While loops w/ Strings
    • JavaScript Exercise Set 3
    • Subprograms & Functions
      • Creating a Function in JavaScript
      • Function with Input and Assignable Output
    • JavaScript Exercise Set 4
  • 💾Topics in CS
    • Computer Environments & Systems
      • Computer Components
        • In-depth Explanations
      • File Maintenance
      • Computer & Safety
      • Software Development
      • Bits & Binary
    • Careers related to Computer Science
    • Postsecondary Opportunities
Powered by GitBook
On this page
  • Bubble Sort
  • Insertion Sort
  • Selection Sort
  • Complexity of Bubble, Insertion, and Selection Sort.
  1. Python Programming
  2. Introduction to Algorithmic Thinking
  3. Basic Algorithms

Basic Sorting Algorithms

PreviousBinary SearchNextRecursion

Last updated 10 months ago

Bubble Sort

A sorting algorithm that is based upon comparing pairs of values and swapping their places if necessary.

Overall Idea:

- (L→ List, i→ index, i starts at 1)    
- Look at L[i] and L[i-1] if they are not sorted, swap locations
- Repeat as you increase i and until no swap occurs

Bubble Sort Demonstration:

repeat until swapped is false
	swapped = false
	for i = 1 to N-1 (inclusively)
		if A[i-1] > A[i] then
			swap(A[i-1],A[i])
			swapped = true
# Bubble Sort:
def bubble(array):
    swapped = True

    if not array:
        return []
    elif len(array) == 1:
        return array
    else:
        while swapped:
            swapped = False
            # Execute necessary swaps from array[1] to array[n]
            for i in range(1,len(array)):
                if array[i-1] > array[i]:
                    # swapping; set swapped to True
                    temp = array[i-1]
                    array[i-1] = array[i]
                    array[i] = temp
                    swapped = True
            # end of for
        # end of while
        return array
# end of bubble()

test = [6, 5, 3, 1, 8, 7, 3, 4]
bubble(test) # since it is a list, it will mutate it

print('Sorted:', test)
Sorted: [1, 3, 3, 4, 5, 6, 7, 8]

Insertion Sort

A sorting algorithm that iterates sorts from the bottom one element at a time.

Overall Idea:

  • Since a singleton list is already sorted, it will grow its “sorted” list with the next value from the list

  • It grabs the next value, removes it, and places in the correct location

  • It does this until the list is fully sorted

Insertion Sort Demonstration:

-- Let A be a List, i and j both be indexes

i = 1
while i < length(A)
	j = i
	while j > 0 and A[j-1] > A[j]
		swap A[j] and A[j-1]
		j = j - 1
	i = i + 1
# Insertion Sort

def insertSort(array):
    i = 1

    if not array:
        return []
    elif len(array) == 1:
        return array
    else:
        while i < len(array):
            j = i # setting up j indexer
            while j > 0 and array[j-1] > array[j]:
                # swapping
                temp = array[j]
                array[j] = array[j-1]
                array[j-1] = temp

                # decrease j
                j -= 1
            # end of inner while
            i += 1
        # end of while
        return array
# end of insertSort()

test = [6, 5, 3, 1, 8, 7, 3, 4]
insertSort(test) # since it is a list, it will mutate it

print('Sorted:', test)
Sorted: [1, 3, 3, 4, 5, 6, 7, 8]

Selection Sort

A sorting algorithm that uses two lists: sorted list and unsorted list.

It brings the smallest values to the sorted list then removed the smallest value in the unsorted list .

Overall Idea:

  • At beginning, sorted list is empty and unsorted list is full

  • Choose the smaller(or largest) value from the unsorted list, and append it to the sorted list

  • Repeat until unsorted list is empty

Selection Sort Demonstration:

-- Let A be the unsorted list, and let B be the sorted list; B starts empty

repeat until A is empty
    Target = the smallest value from A
    Append Target to B
    Remove target from A
# Recursive Selection Sort

def selectSort(array, result=[]):
    if not array:
        return result
    else:
        smallest = array[0]
        small_index = 0

        for i in range(1,len(array)):
            if array[i] < smallest:
                smallest = array[i]
                small_index = i
        # end of for
        result.append(array.pop(small_index))

        return selectSort(array, result)

test = [6, 5, 3, 1, 8, 7, 3, 4]
sorted_test = selectSort(test) # the algorithm is designed to create/return a new list

print('Sorted:', sorted_test)
Sorted: [1, 3, 3, 4, 5, 6, 7, 8]

Complexity of Bubble, Insertion, and Selection Sort.

The 3 sorting algorithms are learned together due to their Big-O Notation.

All 3 algorithms are classified as O(n2)O(n^2)O(n2).

🐍
⏳
Image Source
Image Source
Image Source