Sorting Basics
Sorting Basics
Learn how sorting arranges array elements in a meaningful order and why sorting is important for searching, organizing, and processing data.
What is Sorting?
Sorting is the process of arranging data in a specific order.
In programming, sorting is commonly used to arrange array elements in ascending order, descending order, or alphabetical order.
For example, if we have an array of numbers:
numbers = [40, 10, 50, 20, 30]
After sorting in ascending order, it becomes:
numbers = [10, 20, 30, 40, 50]
After sorting in descending order, it becomes:
numbers = [50, 40, 30, 20, 10]
Easy Real-Life Example
Sorting as Arranging Books
Imagine you have many books on a table. If you arrange them alphabetically by title or from smallest to largest size, you are sorting them.
Sorting in programming works in the same way. We take unsorted data and arrange it in a meaningful order.
Before Sorting:
["Mango", "Apple", "Orange", "Banana"]
After Sorting:
["Apple", "Banana", "Mango", "Orange"]
Why is Sorting Needed?
Sorting is needed because organized data is easier to search, compare, display, and analyze.
Sorting is Used For
- Arranging marks from lowest to highest.
- Arranging product prices from cheapest to costliest.
- Displaying names alphabetically.
- Finding the smallest or largest value easily.
- Preparing data for binary search.
- Organizing records in reports.
- Ranking students, scores, products, or results.
- Improving readability of data.
- Making data analysis easier.
- Building efficient algorithms.
Ascending Order
Ascending order means arranging values from smallest to largest.
Before Sorting:
[45, 12, 89, 23, 5]
After Ascending Sorting:
[5, 12, 23, 45, 89]
For text values, ascending order usually means alphabetical order.
Before Sorting:
["Riya", "Aman", "Sohan", "Meera"]
After Ascending Sorting:
["Aman", "Meera", "Riya", "Sohan"]
Descending Order
Descending order means arranging values from largest to smallest.
Before Sorting:
[45, 12, 89, 23, 5]
After Descending Sorting:
[89, 45, 23, 12, 5]
Descending sorting is useful when we want highest values first, such as top scores or highest prices.
Important Terms in Sorting
| Term | Meaning | Example |
|---|---|---|
| Unsorted Array | An array whose elements are not arranged in order. | [30, 10, 20] |
| Sorted Array | An array whose elements are arranged in required order. | [10, 20, 30] |
| Ascending Order | Smallest to largest order. | [1, 2, 3] |
| Descending Order | Largest to smallest order. | [3, 2, 1] |
| Comparison | Checking which value is smaller or larger. | 10 > 5 |
| Swap | Exchanging positions of two values. | 20, 10 → 10, 20 |
What is Swapping?
Swapping means exchanging the positions of two values.
Many sorting algorithms use swapping to place elements in the correct order.
Before Swap:
a = 20
b = 10
After Swap:
a = 10
b = 20
Language-neutral Swapping Logic
DECLARE temp AS INTEGER
SET temp = firstValue
SET firstValue = secondValue
SET secondValue = temp
A temporary variable is used so that one value is not lost during the exchange.
Common Basic Sorting Algorithms
Beginners usually start with simple sorting algorithms before learning advanced ones.
Basic Sorting Algorithms
- Bubble Sort: Repeatedly compares adjacent elements and swaps them if they are in the wrong order.
- Selection Sort: Repeatedly finds the smallest element and places it at the correct position.
- Insertion Sort: Builds a sorted section by inserting each element into its correct position.
Bubble Sort
Bubble Sort is one of the simplest sorting algorithms. It compares adjacent elements and swaps them if they are in the wrong order.
After each pass, the largest unsorted element moves toward the end of the array.
Bubble Sort Steps
- Start from the first element.
- Compare it with the next element.
- If the current element is greater than the next element, swap them.
- Move to the next pair of elements.
- Repeat until the largest value reaches the end.
- Repeat the process for the remaining unsorted part.
Bubble Sort Pseudocode
FUNCTION bubbleSort(array)
FOR pass FROM 0 TO length(array) - 2
FOR index FROM 0 TO length(array) - pass - 2
IF array[index] > array[index + 1] THEN
SWAP array[index] WITH array[index + 1]
END IF
END FOR
END FOR
RETURN array
END FUNCTION
Example 1: Bubble Sort
/*
This program sorts an array in ascending order using Bubble Sort.
*/
ENTRY POINT
DECLARE numbers AS ARRAY = [5, 3, 8, 4, 2]
FOR pass FROM 0 TO length(numbers) - 2
FOR index FROM 0 TO length(numbers) - pass - 2
IF numbers[index] > numbers[index + 1] THEN
DECLARE temp AS INTEGER = numbers[index]
SET numbers[index] = numbers[index + 1]
SET numbers[index + 1] = temp
END IF
END FOR
END FOR
DISPLAY numbers
END ENTRY POINT
Expected Output
[2, 3, 4, 5, 8]
Bubble Sort Trace Example
Let us sort this array:
[5, 3, 8, 4, 2]
| Pass | Array After Pass | Explanation |
|---|---|---|
| Initial | [5, 3, 8, 4, 2] |
Array is unsorted. |
| Pass 1 | [3, 5, 4, 2, 8] |
Largest value 8 reaches the end. |
| Pass 2 | [3, 4, 2, 5, 8] |
Next largest value 5 reaches correct position. |
| Pass 3 | [3, 2, 4, 5, 8] |
Value 4 reaches correct position. |
| Pass 4 | [2, 3, 4, 5, 8] |
Array becomes sorted. |
Selection Sort
Selection Sort works by repeatedly selecting the smallest element from the unsorted part of the array and placing it at the beginning.
Selection Sort Steps
- Start from the first position.
- Find the smallest value in the unsorted part.
- Swap the smallest value with the first unsorted position.
- Move the boundary of the sorted part one step forward.
- Repeat until the full array is sorted.
Selection Sort Pseudocode
FUNCTION selectionSort(array)
FOR currentIndex FROM 0 TO length(array) - 2
SET minimumIndex = currentIndex
FOR searchIndex FROM currentIndex + 1 TO length(array) - 1
IF array[searchIndex] < array[minimumIndex] THEN
SET minimumIndex = searchIndex
END IF
END FOR
SWAP array[currentIndex] WITH array[minimumIndex]
END FOR
RETURN array
END FUNCTION
Example 2: Selection Sort
/*
This program sorts an array using Selection Sort.
*/
ENTRY POINT
DECLARE numbers AS ARRAY = [29, 10, 14, 37, 13]
FOR currentIndex FROM 0 TO length(numbers) - 2
DECLARE minimumIndex AS INTEGER = currentIndex
FOR searchIndex FROM currentIndex + 1 TO length(numbers) - 1
IF numbers[searchIndex] < numbers[minimumIndex] THEN
SET minimumIndex = searchIndex
END IF
END FOR
DECLARE temp AS INTEGER = numbers[currentIndex]
SET numbers[currentIndex] = numbers[minimumIndex]
SET numbers[minimumIndex] = temp
END FOR
DISPLAY numbers
END ENTRY POINT
Expected Output
[10, 13, 14, 29, 37]
Insertion Sort
Insertion Sort builds the sorted array one element at a time.
It takes one element from the unsorted part and inserts it into the correct position in the sorted part.
Insertion Sort Steps
- Assume the first element is already sorted.
- Pick the next element as the key.
- Compare the key with elements before it.
- Shift larger elements one position to the right.
- Insert the key into its correct position.
- Repeat until all elements are inserted correctly.
Insertion Sort Pseudocode
FUNCTION insertionSort(array)
FOR index FROM 1 TO length(array) - 1
SET key = array[index]
SET previousIndex = index - 1
WHILE previousIndex >= 0 AND array[previousIndex] > key DO
SET array[previousIndex + 1] = array[previousIndex]
SET previousIndex = previousIndex - 1
END WHILE
SET array[previousIndex + 1] = key
END FOR
RETURN array
END FUNCTION
Example 3: Insertion Sort
/*
This program sorts an array using Insertion Sort.
*/
ENTRY POINT
DECLARE numbers AS ARRAY = [9, 5, 1, 4, 3]
FOR index FROM 1 TO length(numbers) - 1
DECLARE key AS INTEGER = numbers[index]
DECLARE previousIndex AS INTEGER = index - 1
WHILE previousIndex >= 0 AND numbers[previousIndex] > key DO
SET numbers[previousIndex + 1] = numbers[previousIndex]
SET previousIndex = previousIndex - 1
END WHILE
SET numbers[previousIndex + 1] = key
END FOR
DISPLAY numbers
END ENTRY POINT
Expected Output
[1, 3, 4, 5, 9]
Bubble Sort vs Selection Sort vs Insertion Sort
| Feature | Bubble Sort | Selection Sort | Insertion Sort |
|---|---|---|---|
| Basic Idea | Swap adjacent elements if they are in wrong order. | Select the smallest element and place it correctly. | Insert each element into its correct position. |
| Beginner Difficulty | Easy | Easy | Moderate |
| Best Use | Learning comparison and swapping. | Learning minimum selection. | Nearly sorted data and logic building. |
| Common Pattern | Repeated adjacent comparison. | Find minimum repeatedly. | Shift and insert. |
Basic Time and Space Complexity
Sorting algorithms are compared using time complexity and space complexity.
| Algorithm | Best Case | Average Case | Worst Case | Extra Space |
|---|---|---|---|---|
| Bubble Sort | O(n) if optimized and already sorted |
O(n²) |
O(n²) |
O(1) |
| Selection Sort | O(n²) |
O(n²) |
O(n²) |
O(1) |
| Insertion Sort | O(n) when nearly/already sorted |
O(n²) |
O(n²) |
O(1) |
What is In-place Sorting?
In-place sorting means sorting the array without using a large extra array.
The original array itself is modified during sorting.
Before:
[4, 2, 1, 3]
After sorting in same array:
[1, 2, 3, 4]
Bubble Sort, Selection Sort, and Insertion Sort are commonly taught as in-place sorting algorithms.
What is Stable Sorting?
A sorting algorithm is called stable if equal values keep their original relative order after sorting.
This matters when each value has additional information.
Before Sorting by marks:
Aman - 80
Riya - 90
Sohan - 80
After stable sorting by marks:
Aman - 80
Sohan - 80
Riya - 90
Here, Aman and Sohan both have 80. A stable sort keeps Aman before Sohan because Aman appeared first originally.
Example 4: Sorting Names Alphabetically
/*
This example shows the idea of sorting text values alphabetically.
*/
ENTRY POINT
DECLARE names AS ARRAY = ["Riya", "Aman", "Sohan", "Meera"]
SORT names IN ASCENDING ORDER
DISPLAY names
END ENTRY POINT
Expected Output
["Aman", "Meera", "Riya", "Sohan"]
Example 5: Sorting Marks in Descending Order
/*
This example sorts marks from highest to lowest.
*/
ENTRY POINT
DECLARE marks AS ARRAY = [72, 95, 81, 60, 88]
SORT marks IN DESCENDING ORDER
DISPLAY marks
END ENTRY POINT
Expected Output
[95, 88, 81, 72, 60]
When to Use Sorting?
Use Sorting When
- You need to display data in a clean order.
- You need highest or lowest values easily.
- You want to prepare data for binary search.
- You need ranking or ordering.
- You want to organize records before processing.
- You need to compare values more easily.
When Sorting May Not Be Needed
Avoid Sorting When
- You only need to check whether one value exists in a small unsorted array.
- The original order must be preserved.
- Sorting is more expensive than the actual task.
- You only need one maximum or minimum value and can find it using traversal.
Common Beginner Mistakes
Mistakes
- Confusing ascending and descending order.
- Forgetting to swap values correctly.
- Losing one value during swapping because no temporary variable is used.
- Using wrong loop boundaries.
- Accessing
array[index + 1]whenindexis already at the last position. - Thinking sorting and searching are the same.
- Using binary search without sorting the array first.
- Not testing already sorted or reverse sorted arrays.
Better Habits
- Clearly decide whether sorting should be ascending or descending.
- Use a temporary variable while swapping.
- Check loop limits carefully.
- Trace the array after each pass.
- Use meaningful variable names such as
index,minimumIndex, andtemp. - Test with small arrays first.
- Test with duplicate values.
- Write expected output before writing sorting logic.
Best Practices for Sorting
Recommended Practices
- Understand the sorting goal before writing logic.
- Use simple sorting algorithms first to learn the concept.
- Use built-in sorting functions in real projects when allowed.
- Use Bubble Sort only for learning or very small datasets.
- Use trace tables to understand how values move.
- Be careful with indexes and loop boundaries.
- Test with unsorted, sorted, reverse sorted, and duplicate data.
- Understand time complexity before choosing an algorithm.
- Use meaningful variable names.
- Keep sorting logic clean and well-indented.
Prerequisites Before Learning Sorting Basics
Students should already understand:
Required Knowledge
- Variables and constants.
- Data types.
- Comparison operators.
- Conditions.
- Loops and nested loops.
- Array indexing.
- Array traversal.
- Searching in arrays.
- Basic swapping logic.
Trace Table Practice
Trace the first pass of Bubble Sort for the following array:
numbers = [4, 1, 3, 2]
| Comparison | Action | Array Status |
|---|---|---|
4 and 1 |
Swap | [1, 4, 3, 2] |
4 and 3 |
Swap | [1, 3, 4, 2] |
4 and 2 |
Swap | [1, 3, 2, 4] |
After the first pass, the largest value 4 reaches the last position.
Practice Activity: Predict the Sorted Array
Predict the output after sorting the following array in ascending order:
values = [12, 5, 9, 1, 7]
Your Answer
Sorted Array:
________________________
Sample Answer
[1, 5, 7, 9, 12]
Mini Quiz
What is sorting?
Sorting is the process of arranging data in a specific order, such as ascending or descending order.
What is ascending order?
Ascending order means arranging values from smallest to largest.
What is descending order?
Descending order means arranging values from largest to smallest.
What is Bubble Sort?
Bubble Sort is a simple sorting algorithm that compares adjacent elements and swaps them if they are in the wrong order.
Why is sorting useful before binary search?
Binary search works only on sorted data, so sorting prepares the array for efficient searching.
Interview Questions on Sorting Basics
Define sorting in programming.
Sorting is the process of arranging elements of a collection in a particular order, such as ascending, descending, or alphabetical order.
What is the difference between ascending and descending sorting?
Ascending sorting arranges values from smallest to largest, while descending sorting arranges values from largest to smallest.
What is the difference between Bubble Sort and Selection Sort?
Bubble Sort repeatedly swaps adjacent elements, while Selection Sort repeatedly selects the smallest element from the unsorted part and places it correctly.
What is the role of swapping in sorting?
Swapping exchanges two values so that elements can move toward their correct positions.
Why are basic sorting algorithms important for beginners?
Basic sorting algorithms help students understand comparison, swapping, nested loops, array traversal, and algorithm efficiency.
Quick Summary
| Concept | Meaning |
|---|---|
| Sorting | Arranging data in a specific order. |
| Ascending Order | Smallest to largest order. |
| Descending Order | Largest to smallest order. |
| Swap | Exchange two values. |
| Bubble Sort | Compares and swaps adjacent elements. |
| Selection Sort | Selects the smallest element repeatedly. |
| Insertion Sort | Inserts each element into its correct position. |
| Best Learning Value | Sorting teaches loops, comparisons, swapping, and algorithm thinking. |
Final Takeaway
Sorting basics help students understand how data can be arranged in a meaningful order. Sorting is useful for organizing information, preparing data for searching, ranking values, and improving readability. In the Programming Mastery Course, students should first master simple sorting algorithms like Bubble Sort, Selection Sort, and Insertion Sort because these build strong foundations for advanced algorithms and problem-solving.