Skip to content

Commit 5d04574

Browse files
committed
Added necessary documentation and removed the using namespace
1 parent 302b33e commit 5d04574

File tree

1 file changed

+53
-28
lines changed

1 file changed

+53
-28
lines changed

sorting/bubble_sort_optimized.cpp

Lines changed: 53 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,62 @@
1+
#include <iostream> /// for IO operations
2+
#include <vector> /// for std::vector
3+
#include <cassert> /// for assert
14

2-
/*This version of bubble sort will reduce the number of passes needed if average cases and also the number od swaps needed in each pass which optimize the algorithm*/
5+
namespace sorting {
36

7+
/**
8+
* @brief Sorts the given vector using the bubble sort algorithm.
9+
* Optimized by reducing the number of passes in average cases.
10+
* @param nums the vector of integers to be sorted
11+
* @return reference to the sorted vector
12+
*/
13+
std::vector<int>& bubble_sort(std::vector<int>& nums) {
14+
int flag=0;
15+
int temp;
16+
for(int i=0; i<nums.size()-1;i++){
17+
flag=0;
18+
for(int j=0; j<nums.size()-1-i;j++){
19+
if(nums[j]>nums[j+1]){
20+
temp=nums[j];
21+
nums[j]=nums[j+1];
22+
nums[j+1]=temp;
23+
flag=1;
24+
}
25+
}
26+
if(flag==0){
27+
break;
28+
}
29+
}
30+
return nums;
31+
}
432

5-
#include <iostream>
6-
#include <vector>
7-
using namespace std;
33+
/**
34+
* @brief Self-test implementations
35+
* @returns void
36+
*/
37+
static void tests() {
38+
std::vector<int> v1 = {2,8,1,6,2,0,3,6};
39+
std::vector<int> expected1 = {0,1,2,2,3,6,6,8};
40+
assert(bubble_sort(v1) == expected1);
841

9-
vector<int>& bubble_sort(vector<int>& nums){
10-
int flag=0;
11-
int temp;
12-
for(int i=0; i<nums.size()-1;i++){
13-
flag=0;
14-
for(int j=0; j<nums.size()-1-i;j++){
15-
if(nums[j]>nums[j+1]){
16-
temp=nums[j];
17-
nums[j]=nums[j+1];
18-
nums[j+1]=temp;
19-
flag=1;
20-
}
21-
}
22-
if(flag==0){
23-
break;
24-
}
42+
std::vector<int> v2 = {5,4,3,2,1};
43+
std::vector<int> expected2 = {1,2,3,4,5};
44+
assert(bubble_sort(v2) == expected2);
45+
46+
std::vector<int> v3 = {1,2,3,4,5};
47+
std::vector<int> expected3 = {1,2,3,4,5};
48+
assert(bubble_sort(v3) == expected3);
49+
50+
std::cout << "All tests have successfully passed!\n";
2551
}
26-
return nums;
2752
}
2853

29-
54+
/**
55+
* @brief Main function
56+
* @returns 0 on exit
57+
*/
3058
int main() {
31-
vector<int> v={2,8,1,6,2,0,3,6};
32-
v=bubble_sort(v);
33-
for(int i=0;i<v.size();i++){
34-
cout<<v.at(i)<<endl;
35-
}
59+
sorting::tests(); // run self-test implementations
3660
return 0;
37-
}
61+
}
62+

0 commit comments

Comments
 (0)