diff --git a/combsort.cpp b/combsort.cpp index 8b29ffc9d..6c1f3e22b 100644 --- a/combsort.cpp +++ b/combsort.cpp @@ -1,3 +1,8 @@ +//Kind of better version of Bubble sort. +//While Bubble sort is comparering adjacent value, Combsort is using gap larger than 1 +//Best case: O(n) +//Worst case: O(n ^ 2) + #include using namespace std; @@ -12,14 +17,20 @@ int FindNextGap(int x) { } void CombSort(int a[], int l, int r) { + //Init gap int gap = n; + + //Initialize swapped as true to make sure that loop runs bool swapped = true; + //Keep running until gap = 1 or none elements were swapped while (gap != 1 || swapped) { + //Find next gap gap = FindNextGap(gap); - + swapped = false; + // Compare all elements with current gap for(int i = l; i <= r - gap; ++i) { if (a[i] > a[i + gap]) { swap(a[i], a[i + gap]); @@ -38,4 +49,4 @@ int main() { for(int i = 1; i <= n; ++i) cout << a[i] << ' '; return 0; -} \ No newline at end of file +}