कॉम्ब सॉर्ट बबल सॉर्ट और कॉकटेल सॉर्ट के समान है। कॉम्ब सॉर्ट आसन्न तत्वों को देखना शुरू नहीं करता है, बल्कि तत्वों को एक निश्चित संख्या में अनुक्रमित के अलावा देखता है, इसे गैप कहा जाता है। गैप को [n/c] के रूप में परिभाषित किया गया है जहां n तत्वों की संख्या है और c सिकुड़न कारक है। प्रत्येक पुनरावृत्ति के बाद, यह संख्या c से विभाजित होने के विरुद्ध है और अंतत:, एल्गोरिथ्म आसन्न तत्वों को देख रहा है।
Input:53421 Output:12345
स्पष्टीकरण
कॉम्ब सॉर्ट दो तत्वों की तुलना एक अंतराल के साथ करता है जिसे [n/c] के रूप में परिभाषित किया गया है जहां n तत्वों की संख्या है और c सिकुड़ने वाला कारक है यानी 1.3। प्रत्येक पुनरावृत्ति के बाद, यह संख्या c से विभाजित होने के विरुद्ध है और अंतत:, एल्गोरिथ्म आसन्न तत्वों को देख रहा है।
उदाहरण
#include <iostream>
using namespace std;
void combsort(int a[], int n) {
int i, j, gap, swapped = 1;
double temp;
gap = n;
while (gap > 1 || swapped == 1) {
gap = gap * 10 / 1.3;
if (gap == 9 || gap == 10) {
gap = 11;
}
if (gap < 1) {
gap = 1;
}
swapped = 0;
for (i = 0, j = gap; j < n; i++, j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
swapped = 1;
}
}
}
}
int main () {
int n, i;
int arr[] = { 5, 3, 4, 2, 1 };
n=5;
combsort(arr, n);
for(i = 0;i < n;i++) {
cout<<arr[i]<<"\t";
}
return 0;
}