चयन सॉर्ट एक हमला करने वाला एल्गोरिदम है जो किसी सरणी से सबसे छोटी संख्या को खोजने के लिए काम करता है और फिर उसे पहले स्थान पर रखता है। ट्रैवर्स की जाने वाली अगली सरणी इंडेक्स से शुरू होगी, उस स्थिति के बगल में, जहां सबसे छोटी संख्या रखी गई है।
चयन क्रम की प्रक्रिया
-
तत्वों की सूची में पहला सबसे छोटा तत्व चुनें और उसे पहले स्थान पर रखें।
-
सूची में शेष तत्वों के लिए इसे तब तक दोहराएं जब तक कि सभी तत्व क्रमबद्ध न हो जाएं।
निम्नलिखित सूची पर विचार करें -
पहला पास
Sm = a[0] = 30 Sm
ए [1] <एसएम $\वर्ग$ $\वर्ग$ 50 <30 (एफ) $\वर्ग$ $\वर्ग$ 30पी>
a[2]
ए[3] <एसएम $\वर्ग$ $\वर्ग$ 10 <30 (टी) $\वर्ग$ $\वर्ग$ 10पी>
ए [4] <एसएम $\वर्ग$ $\वर्ग$ 20<10 (एफ) $\वर्ग$ $\वर्ग$ 10पी>
a[2] <एसएम $\वर्ग$ $\वर्ग$ 40 <50 (टी) $\वर्ग$ 40 $\वर्ग$
a[3]
a[4] <एसएम $\वर्ग$ $\वर्ग$ 20<30 (टी) $\वर्ग$ 20
ए [3] <एसएम $\वर्ग$ $\वर्ग$ 30 <40 (टी) $\वर्ग$ $\वर्ग$ 40पी>
a[4]
a[4] <$\square$ $\square$ sm 50 <40 (F) $\square$ 40 $\square$ एक्सचेंज a[3] sm वैल्यू के साथ
चयन छँटाई के लिए नीचे दी गई प्रक्रिया देखें।
चयन छँटाई तकनीक के लिए सी कार्यक्रम निम्नलिखित है -
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -10 50 40 30 20
दूसरा पास
Sm = a[1] = 50 sm
10 20 40 30 50
तीसरा पास
Sm = a[2] = 40 Sm
10 20 30 40 50
चौथा पास
Sm = a[3] = 40 Sm
प्रक्रिया
for (i=0; i<n-1; i++){
sm=i;
for (j=i+1; j<n; j++){
if (a[j] < a[sm])
sm=j;
}
t=a[i];
a[i] = a[sm];
a[sm] = t;
}
}
उदाहरण
#include<stdio.h>
int main(){
int a[50], i,j,n,t,sm;
printf("enter the No: of elements in the list:\n");
scanf("%d", &n);
printf("enter the elements:\n");
for(i=0; i<n; i++){
scanf ("%d", &a[i]);
}
for (i=0; i<n-1; i++){
sm=i;
for (j=i+1; j<n; j++){
if (a[j] < a[sm]){
sm=j;
}
}
t=a[i];
a[i]=a[sm];
a[sm]=t;
}
printf ("after selection sorting the elements are:\n");
for (i=0; i<n; i++)
printf("%d\t", a[i]);
return 0;
}
आउटपुट
enter the No: of elements in the list:
4
enter the elements:
45
12
37
68
after selection sorting the elements are:
12 37 45 68