Advertisement
Vladpepe

Untitled

Oct 25th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. /*
  2. Selection Sort (naive sort)   Time complexity   O(n^2)
  3.  
  4. scorro lungo tutto l'array e ogni volta trovo il minimo e lo swappo con il numero alla posizione i
  5. finche non ottengo tutto in ordine
  6.  
  7. */
  8.  
  9. #include "stdio.h"
  10.  
  11. void SelectionSort(int *A, int n) {
  12.     int i = 0;
  13.     for (; i < n - 1;i++) {
  14.         int iMin = i;
  15.         for (int j = i+1; j < n ;j++) {
  16.             if (A[j] < A[iMin]) {
  17.                 iMin = j;
  18.             }
  19.         }
  20.             int temp = A[i];
  21.                 A[i] = A[iMin];
  22.                 A[iMin] = temp;
  23.                 printf("%d", A[i]);    
  24.     }
  25.     printf("%d", A[i]);
  26. }
  27.  
  28. int main() {
  29.     int A[] = { 2,7,4,1,5,3 };
  30.     SelectionSort(A, 6);
  31. }
  32.  
  33.  
  34. /* Bubble Sort  Time Complexity O(n^2)  
  35.  
  36. confronto una coppia di numeri alla volta spostando di di volta in volta il numero piu grande verso destra.
  37. il Flag serve per capire se la stringa era gia ordinata,
  38.  in questo caso evita di rifare n volte il loop di riordinamento
  39. diventando quindi nel caso miglione O(n).
  40.  
  41. */
  42.  
  43. #include "stdio.h"
  44. #define swap(type, i, j) {type t = i; i = j; j = t;}
  45.  
  46. void BubbleSort(int *A,int n) {
  47.     for (int u = 1;u < n - 1;u++) {
  48.         int flag = 0;
  49.         for (int i = 0; i < n - 2;i++) {
  50.             if (A[i] > A[i + 1]) {
  51.                 swap(int, A[i], A[i + 1]);
  52.                 flag = 1;
  53.             }
  54.         }
  55.         if (flag == 0);
  56.         break;
  57.     }
  58. }
  59.  
  60. int main() {
  61.     int A[] = { 1,2,3,4,5,6,7,8 };
  62.     int n = 8;
  63.     BubbleSort(A, n);
  64.     for (int i = 0; i < n;i++) {
  65.         printf("%d", A[i]);
  66.     }
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement