📖 Scenario: You have a list of numbers that are not in order. You want to arrange them from smallest to largest, like sorting books by height on a shelf.
🎯 Goal: Build a program that uses the bubble sort method to sort a list of numbers in ascending order.
📋 What You'll Learn
Create a list of numbers called numbers with exact values
Create a variable called n to store the length of the list
Use nested for loops with variables i and j to perform bubble sort
Swap elements in the list when needed to sort
Print the sorted list
💡 Why This Matters
🌍 Real World
Sorting is used in many places like arranging names in a phone book or organizing files by date.
💼 Career
Understanding sorting algorithms is important for software developers to write efficient code and solve problems involving data organization.
Progress0 / 4 steps
1
Create the list of numbers
Create a list called numbers with these exact values: 64, 34, 25, 12, 22, 11, 90
DSA Rust
Hint
Use let mut numbers = vec![64, 34, 25, 12, 22, 11, 90]; to create the list.
2
Create a variable for the list length
Create a variable called n and set it to the length of the numbers list using numbers.len()
DSA Rust
Hint
Use let n = numbers.len(); to get the length.
3
Implement the bubble sort logic
Use nested for loops with variables i and j to compare and swap adjacent elements in numbers to sort the list in ascending order
DSA Rust
Hint
Use for i in 0..n and inside it for j in 0..n - i - 1. Swap elements if the left one is bigger.
4
Print the sorted list
Print the numbers list after sorting using println!("{:?}", numbers);
DSA Rust
Hint
Use println!("{:?}", numbers); to print the list.
Practice
(1/5)
1. What is the main idea behind the Bubble Sort algorithm?
easy
A. Select the smallest element and move it to the beginning
B. Repeatedly swap adjacent elements if they are in the wrong order
C. Divide the list into halves and sort each half separately
D. Insert each element into its correct position in a sorted sublist
Solution
Step 1: Understand Bubble Sort process
Bubble Sort compares adjacent elements and swaps them if they are out of order.
Step 2: Compare with other sorting methods
Other options describe different sorting algorithms like merge sort, selection sort, and insertion sort.
Final Answer:
Repeatedly swap adjacent elements if they are in the wrong order -> Option B
Quick Check:
Bubble Sort = swapping adjacent pairs [OK]
Hint: Bubble Sort swaps neighbors repeatedly until sorted [OK]
Common Mistakes:
Confusing Bubble Sort with Selection Sort
Thinking it divides the list like Merge Sort
Assuming it inserts elements like Insertion Sort
2. Which of the following is the correct Rust syntax to swap two elements a[i] and a[i+1] in a vector a during Bubble Sort?
easy
A. std::mem::swap(a[i], a[i + 1]);
B. swap(a[i], a[i + 1]);
C. a.swap(i, i + 1);
D. a[i], a[i + 1] = a[i + 1], a[i];
Solution
Step 1: Identify Rust vector swap method
Rust vectors have a built-in method swap(index1, index2) to swap elements safely.
Step 2: Check other options for correctness
std::mem::swap(a[i], a[i + 1]); lacks mutable references and won't compile, swap(a[i], a[i + 1]); is invalid syntax with no such function, a[i], a[i + 1] = a[i + 1], a[i]; is invalid Python-style syntax in Rust.
Final Answer:
a.swap(i, i + 1); -> Option C
Quick Check:
Rust vector swap method = a.swap(i, i + 1) [OK]
Hint: Use vector.swap(i, j) to swap elements in Rust [OK]
Common Mistakes:
Using Python or C++ style swap syntax
Trying to swap values directly without references
Calling std::mem::swap on vector elements incorrectly
3. What will be the output of the following Rust code snippet after applying one full pass of Bubble Sort on the vector?
let mut a = vec![4, 3, 2, 1];
for i in 0..a.len() - 1 {
if a[i] > a[i + 1] {
a.swap(i, i + 1);
}
}
println!("{:?}", a);
Pass 2:
- 0 > -1 no
- -1 > 3 no
- 3 > 2 swap -> [0, -1, 2, 3, 5]
Total swaps: 1
Pass 3:
- 0 > -1 no
- -1 > 2 no
No swaps
Pass 4:
No swaps
Total swaps overall = 3 + 1 + 0 + 0 = 4 (recheck)
Step 3: Recount carefully
Actually, in Pass 1, 3 > 0 swap (1), 3 > -1 swap (2), 5 > 2 swap (3)
Pass 2, 0 > -1 no, -1 > 3 no, 3 > 2 swap (4)
Pass 3, 0 > -1 no, -1 > 2 no
Pass 4 no swaps
Total swaps = 4
Step 4: Check for missed swaps
Pass 2 also compares 2 and 3, no swap; Pass 3 no swaps; Pass 4 no swaps.
But initial count missed the swap between 3 and 2 in Pass 2, and also the swap between 3 and 2 in Pass 2 is counted once.
Total swaps = 4 as per trace.
Step 5: Verify by counting inversions
Count inversions in initial array:
(3,0), (3,-1), (3,2), (0,-1), (5,2)
Total inversions = 5
Bubble Sort swaps equal to number of inversions, so total swaps = 5
Final Answer:
5 -> Option D
Quick Check:
Number of swaps equals number of inversions = 5 [OK]
Hint: Count swaps each pass until no swaps remain or count inversions [OK]
Common Mistakes:
Counting comparisons instead of swaps
Missing swaps in later passes
Assuming swaps equal to length minus one
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.