fork download
  1. #include <stdio.h>
  2.  
  3. #define N 5
  4.  
  5. void selection_sort(int *a, int n);
  6. int *find_largest(int *a, int n);
  7. void swap(int *p, int *q);
  8.  
  9. int main(void){
  10. int i;
  11. int a[N];
  12.  
  13. printf("Enter %d numbers to be sorted: ", N);
  14. for (i = 0; i < N; i++)
  15. scanf("%d", a+i);
  16.  
  17. selection_sort(a, N);
  18.  
  19. printf("In sorted order:");
  20. for (i = 0; i < N; i++)
  21. printf(" %d", *(a+i));
  22. printf("\n");
  23.  
  24. return 0;
  25. }
  26.  
  27. void selection_sort(int *a, int n){
  28. int i = 0;
  29. int *largest;
  30.  
  31. for(i = 0; i < n-1; i++){
  32. largest = find_largest(a, n-i);
  33. swap(largest, a+(n-1-i));
  34. }
  35. }
  36.  
  37. int *find_largest(int *a, int n){
  38. int *p = a;
  39. int *largest = p;
  40. for(++p; p < a+n; p++){
  41. if(*p > *largest){
  42. largest = p;
  43. }
  44. }
  45. return largest;
  46. }
  47.  
  48. void swap(int *p, int *q){
  49. int temp = *p;
  50. *p = *q;
  51. *q = temp;
  52. }
Success #stdin #stdout 0s 2172KB
stdin
6 9 9 3 1
stdout
Enter 5 numbers to be sorted: In sorted order: 1 3 6 9 9