Line 1: Line 1:
 +
<metadesc>Selection sort program in C using recursion</metadesc>
 
[[Complexities_of_Basic_Sorting_Algorithms |Complexity and no. of swaps required]]
 
[[Complexities_of_Basic_Sorting_Algorithms |Complexity and no. of swaps required]]
 
==Recursive solution==
 
==Recursive solution==

Revision as of 09:56, 22 July 2014

Complexity and no. of swaps required

Recursive solution

<syntaxhighlight lang="c" name="selectionsort_rec">

void selection_sort(int *a, int n) {

       if(n == 1)
               return;
       int big = 0, i;
       for(i = 1; i < n; i++)
               if(a[i] > a[big])
                       big = i;
  
       /*swap a[n-1] and a[big]*/
       int temp = a[n-1];
       a[n-1] = a[big];
       a[big] = temp;
       selection_sort(a, n-1);

}


int main() {

       int a[100], i, n;
       printf("Enter n:");
       scanf("%d", &n);
       printf("Enter numbers: ");
       for(i = 0; i < n; i++)
               scanf("%d", &a[i]);
       selection_sort(a, n);
       prntf("Printing sorted:\n");
       for(i = 0; i < n; i++)
               printf("%d ", a[i]);
       return 0;

}

</syntaxhighlight>




blog comments powered by Disqus

Complexity and no. of swaps required

Recursive solution[edit]

<syntaxhighlight lang="c" name="selectionsort_rec">

void selection_sort(int *a, int n) {

       if(n == 1)
               return;
       int big = 0, i;
       for(i = 1; i < n; i++)
               if(a[i] > a[big])
                       big = i;
  
       /*swap a[n-1] and a[big]*/
       int temp = a[n-1];
       a[n-1] = a[big];
       a[big] = temp;
       selection_sort(a, n-1);

}


int main() {

       int a[100], i, n;
       printf("Enter n:");
       scanf("%d", &n);
       printf("Enter numbers: ");
       for(i = 0; i < n; i++)
               scanf("%d", &a[i]);
       selection_sort(a, n);
       prntf("Printing sorted:\n");
       for(i = 0; i < n; i++)
               printf("%d ", a[i]);
       return 0;

}

</syntaxhighlight>




blog comments powered by Disqus