- 0-Introduction
- 1-Chatbot Variables
- 2-Password IF Statements
- 3-Create Main Menu functions
- 4-Complete Quiz 3 Questions
- 5-Adding Score variable global
- 6-Debug this code
- 7-Introducing While loops Boolean flags
- 8-Introducing Validation password creation
- 9a-For Loop Guess the number
- 9b-For Loop Password Challenge
- 9c-For Loop Times table challenge
- FINAL CHALLENGE
- Skills Consolidation Task 1
- Test 1
- 0-Introduction
- 1-Introducing Lists
- 2-Personality Predictor Lists app
- 3-Players assigned weapons lists
- 3a-Nested List Matrix Snakes and Ladders game
- 3b Nested List Super Extension Complete game
- 4-String Manipulation Username Creator
- 5-StringManipulation Email Creator based on Validated username
- 6-Strip characters from password app
- 7-Create registration feature using lists
- 8-Introducing Dictionaries registration with dicts
- 8a-Course teacher finder program with dicts
- 9a-Football Club app Create and Learn
- 9b-Online Shopping Basket Checkout Program Create and Learn
- Test 1
- 0-Introduction
- 1-Introducing File Handling
- 2-READ from fake facebook file
- 3-SEARCH for username return no of friends
- 4-SEARCH by ID return full record listing
- 5-ADD WRITE a new user to file
- 6-SORT file by USER ID and Last Name
- 7-Bingo game store scores
- 8-Modulo Magic Program
- 9-Create Maths Quiz Program Tutorial
- 9a-How-to-DELETE user record row from file
- 9b-How to EDIT a field in a file
- Test 1

- 00 Intro
- 01 Main Menu Start Screen
- 02 Registration Feature Part1
- 03 Secure Password Creator
- 04 Login Functionality
- 05 MainFilms Menu Members
- 06 Allow Users to View films
- 07 Store Viewed Films by user
- 08 Allow users to like films
- 09 Search by Title
- 10 Search by Rating
- 11 Recommendations based on viewing FinalSolutions

- 00 Overview Start Here
- 01 Connect Create table
- 02 Add records to table
- 03 Fetch Display records
- 04 Update database records
- 05 Delete records
- 06 Search by condition where clause
- 07 Search for key phrase word
- 08 Sorting in SQLite
- 09 Search return selected fields
- 10 Count no rows
- 11 Find Max Value in column
- 12 Calculate Average
- 13 Calculate SUM total
- 14 Login username password sqlite

- 00-Introduction to OOP and Classes
- 01-Setup Game Canvas
- 02-Create a Ball Class
- 03-Setup main animation loop
- 04-Make the ball move up
- 05-Create bouncing ball movement
- 06-Change Starting Direction
- 07-Right left wall collision detection
- 08-Add Pong bat paddle class
- 09-Bat movement
- 10 Bat Ball collision detection
- 11 End Game Feature if ball hits bottom
- 12 Display text game over

In this series we provide a

- video,
- explanation,
- flow chart and
- python code implementation
- Download suggested classroom learning activities

for the various sorting algorithms.

In computer science, a sorting algorithm is exactly what you'd imagine it would be - it's simply an algorithm that puts elements of a list in a certain order. Sounds simple enough doesn't it, but if you really think about it, so much of what we do - particularly with data - involves sorting, and without it, well, we'd be stuck! Sorting a small list of say 10 names in alphabetical order is rather simple, but consider a list that is comprised of a million items - what then? Obviously, the more efficient the sorting algorithm, the better, particularly in terms of time efficiency. A ton of people have even dedicated their entire lives to this stuff ....so don't put it aside as boring just yet!

The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) which require input data to be in sorted lists; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions: The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order); The output is a permutation (reordering but with all of the original elements) of the input. Further, the data is often taken to be in an array, which allows random access, rather than a list, which only allows sequential access, though often algorithms can be applied with suitable modification to either type of data.

This series will primarily look at python code for the various sorting algorithms, along with an explanation (video or presentation) for each. If you're really interested however, there is plenty of additional information on this topic below:

- Sorting Algorithms Animation - compare and contrast them here
- Animations of Sorting Algorithms (Wikimedia Commons)
- Algorithm Visualisations
- Video on Sorting Algorithms (Bubble Sort and Quick Sort)
- Classification of Sorting Algorithms
- List of popular Sorting Algorithms
- Huge list comparison of Algorithms with description and key points
- Coded implementations of the various algorithms in different languages

**Basic :**

- Sorting Terminology
- Stability in sorting algorithms
- Time complexities of Standard Sorting Algorithms
- External Sorting

- Selection Sort
- Bubble Sort
- Recursive Bubble Sort
- Insertion Sort
- Recursive Insertion Sort
- Merge Sort
- Iterative Merge Sort
- Quick Sort
- Iterative Quick Sort
- Heap Sort
- Counting Sort
- Radix Sort
- Bucket Sort
- ShellSort
- TimSort
- Comb Sort
- Pigeonhole Sort
- Cycle Sort
- Cocktail Sort

- Bitonic Sort
- Pancake sorting
- Binary Insertion Sort
- BogoSort or Permutation Sort
- Gnome Sort
- Sleep Sort – The King of Laziness / Sorting while Sleeping
- Structure Sorting (By Multiple Rules) in C++
- Stooge Sort
- Tag Sort (To get both sorted and original)
- Tree Sort
- Cartesian Tree Sorting
- Odd-Even Sort / Brick Sort
- QuickSort on Singly Linked List
- QuickSort on Doubly Linked List
- 3-Way QuickSort (Dutch National Flag)
- Merge Sort for Linked Lists
- Merge Sort for Doubly Linked List
- 3-way Merge Sort

**Library Implementations of Sorting Algorithms :**

- Know Your Sorting Algorithm | Set 1 (Sorting Weapons used by Programming Languages)
- Know Your Sorting Algorithm | Set 2 (Introsort- C++’s Sorting Weapon)
- Comparator function of qsort() in C
- sort() in C++ STL
- C qsort() vs C++ sort()
- Arrays.sort() in Java with examples
- Collections.sort() in Java with Examples

- Asymptotic Analysis and comparison of sorting algorithms
- Hoare’s vs Lomuto partition scheme in QuickSort
- Serial Sort v/s Parallel Sort in Java
- An Insertion Sort time complexity question
- Time complexity of insertion sort when there are O(n) inversions?
- Lower bound for comparison based sorting algorithms
- Which sorting algorithm makes minimum number of memory writes?
- When does the worst case of Quicksort occur?
- Can QuickSort be implemented in O(nLogn) worst case time complexity?
- QuickSort Tail Call Optimization (Reducing worst case space to Log n )
- Why Quick Sort preferred for Arrays and Merge Sort for Linked Lists?
- Where is Heap Sort used practically?
- Find memory conflicts among multiple threads

- Sort elements by frequency | Set 1
- Sort elements by frequency | Set 2
- Count Inversions in an array | Set 1 (Using Merge Sort)
- Sort an array of 0s, 1s and 2s
- Find the Minimum length Unsorted Subarray, sorting which makes the complete array sorted
- Find whether an array is subset of another array | Added Method 3
- Sort a nearly sorted (or K sorted) array
- Sort numbers stored on different machines
- Sort a linked list of 0s, 1s and 2s
- A Pancake Sorting Problem
- Find number of pairs (x, y) in an array such that x^y > y^x
- Count all distinct pairs with difference equal to k
- C Program for Bubble Sort on Linked List
- Sort n numbers in range from 0 to n^2 – 1 in linear time
- C Program to Sort an array of names or strings
- Sort an array according to the order defined by another array
- Given a sorted array and a number x, find the pair in array whose sum is closest to x
- Sort an array in wave form
- Check if any two intervals overlap among a given set of intervals
- How to efficiently sort a big list dates in 20’s
- Sort an almost sorted array where only two elements are swapped
- Find the point where maximum intervals overlap
- Sort a linked list that is sorted alternating ascending and descending orders?
- C++ program for Sorting Dates using Selection Sort
- How to sort an array of dates in C/C++?
- Sorting Strings using Bubble Sort
- Maximum product of a triplet (subsequnece of size 3) in array
- Find missing elements of a range
- Find a permutation that causes worst case of Merge Sort
- Minimum sum of two numbers formed from digits of an array
- Find minimum difference between any two elements
- Convert an array to reduced form | Set 1 (Simple and Hashing)
- Sorting Vector of Pairs in C++ | Set 1 (Sort by first and second)
- Sorting Vector of Pairs in C++ | Set 2 (Sort in descending order by first and second)
- Sorting 2D Vector in C++ | Set 1 (By row and column)
- Sorting 2D Vector in C++ | Set 2 (In descending order by row and column)
- Sorting 2D Vector in C++ | Set 3 (By number of columns)
- Find Surpasser Count of each element in array
- Rearrange positive and negative numbers with constant extra space
- Sort an array according to count of set bits
- Count distinct occurrences as a subsequence
- Minimum number of swaps required to sort an array
- Number of swaps to sort when only adjacent swapping allowed
- Minimum swaps to make two arrays identical
- Find elements larger than half of the elements in an array
- Count minimum number of subsets (or subsequences) with consecutive numbers
- Sum of all elements between k1’th and k2’th smallest elements
- Number of sextuplets (or six values) that satisfy an equation
- Sort an array according to absolute difference with given value
- Minimize the sum of product of two arrays with permutations allowed
- Position of an element after stable sort
- Chocolate Distribution Problem
- Sort even-placed elements in increasing and odd-placed in decreasing order
- Permute two arrays such that sum of every pair is greater or equal to K
- Chose k array elements such that difference of maximum and minimum is minimized
- Sort an array when two halves are sorted
- Find pair with greatest product in array
- Minimum swap required to convert binary tree to binary search tree
- K-th smallest element after removing some integers from natural numbers
- Check whether Arithmetic Progression can be formed from the given array
- Bucket Sort To Sort an Array with Negative Numbers
- Possible to form a triangle from array values
- Maximum difference between frequency of two elements such that element having greater frequency is also greater
- Check if reversing a sub array make the array sorted
- Find all triplets with zero sum
- Sort a Matrix in all way increasing order
- Sort array after converting elements to their squares
- Sort all even numbers in ascending order and then sort all odd numbers in descending order
- Sorting Big Integers
- Sort an array of large numbers
- Sort 3 Integers without using if condition or using only max() function
- Minimum difference between max and min of all K-size subsets
- Minimum swaps to reach permuted array with at most 2 positions left swaps allowed
- Convert an array to reduced form | Set 2 (Using vector of pairs)
- Find sum of non-repeating (distinct) elements in an array
- Minimum sum of absolute difference of pairs of two arrays
- Find the largest multiple of 3 from array of digits | Set 2 (In O(n) time and O(1) space)
- Noble integers in an array (count of greater elements is equal to value)
- Find maximum height pyramid from the given array of objects
- Program to check if an array is sorted or not (Iterative and Recursive)
- Smallest Difference Triplet from Three arrays
- Smallest Difference pair of values between two unsorted Arrays
- Find whether it is possible to make array elements same using one external number
- Sort an array of strings according to string lengths
- Check if it is possible to sort an array with conditional swapping of adjacent allowed
- Sort an array after applying the given equation
- Print array of strings in sorted order without copying one string into another
- Sort elements on the basis of number of factors