Advertisement
Guest User

selectionSort

a guest
Nov 20th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. /*
  2.  * File:   main.c
  3.  * Author: Gerardo Cicalese
  4.  *
  5.  * Created on 18 novembre 2019, 14.22
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11.  
  12. typedef int Info;
  13.  
  14. void selectionSort(Info *, int);
  15. int searchMin(Info *, int);
  16. void swap(Info *, Info *);
  17. int compare(Info, Info);
  18.  
  19. int main(void)
  20. {
  21.     srand(time(NULL));
  22.     Info array[10];
  23.    
  24.     for(int i=0; i<10; ++i)
  25.         array[i] = rand()%100;
  26.    
  27.     for(int i=0; i<10; ++i)
  28.         printf("%d\t", array[i]);
  29.    
  30.     printf("\nSorting...\n");
  31.     selectionSort(array, 10);
  32.    
  33.     for(int i=0; i<10; ++i)
  34.         printf("%d\t", array[i]);
  35.    
  36.     return 0;
  37. }
  38.  
  39. void selectionSort(Info * array, int len)
  40. {
  41.     int min, j = len;
  42.     for(int i = 0; i < j; ++i, ++array, --len)
  43.     {
  44.         min = searchMin(array, len);
  45.         (min == 0)?:(swap(array, array+min));
  46.     }
  47. }
  48.  
  49. int searchMin(Info * array, int len)
  50. {
  51.     int min = 0;
  52.    
  53.     for(int i = 1; i < len; ++i)
  54.         if(-1 == compare(array[i], array[min]))
  55.             min = i;
  56.    
  57.     return min;
  58. }
  59.  
  60. void swap(Info * a, Info * b)
  61. {
  62.     Info temp = *a;
  63.     *a = *b;
  64.     *b = temp;
  65. }
  66.  
  67. int compare(Info a, Info b)
  68. {
  69.     if(a == b)
  70.         return 0;
  71.    
  72.     if(a > b)
  73.         return 1;
  74.    
  75.     return -1;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement