Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.42 KB | None | 0 0
  1. void bubbleSort(int tab[], int n){
  2.     int porownanie=0,podstawienie=0;
  3.     for (int i=0;i<n;i++){
  4.         podstawienie++;
  5.         for (int j=0;j<n-1;j++){
  6.             podstawienie++;
  7.             if (tab[j]>tab[j+1]){
  8.                 porownanie++;
  9.                 int temp=tab[j];
  10.                 podstawienie++;
  11.                 tab[j]=tab[j+1];
  12.                 podstawienie++;
  13.                 tab[j+1]=temp;
  14.                 podstawienie++;
  15.             }
  16.         }
  17.     }
  18. } O(n^2)
  19.  
  20. void insertionSort(int tab[], int n){
  21.     int porownanie=0, podstawienie=0;
  22.     for (int i=0;i<n;i++){
  23.         podstawienie++;
  24.         int klucz=tab[i];
  25.         podstawienie++;
  26.         int j=i-1;
  27.         podstawienie++;
  28.         while ((j>=0) && (tab[j]>klucz)){
  29.             porownanie=porownanie+2;
  30.             tab[j+1]=tab[j];
  31.             podstawienie++;
  32.             j--;
  33.             podstawienie++;
  34.         }
  35.         tab[j+1]=klucz;
  36.         podstawienie++;
  37.     }
  38. } O(n^2)
  39.  
  40. void shellSort(int tab[], int n){
  41.     int porownanie=0, podstawienie=0;
  42.     for (int odstep=n/2;odstep>0;odstep/=2){
  43.         podstawienie++;
  44.         for (int i=odstep; i<n;i++){
  45.             podstawienie++;
  46.             int temp=tab[i];
  47.             podstawienie++;
  48.             for(int j=i;j>=odstep && tab[j-odstep]>temp;j=j-odstep){
  49.                 podstawienie++;
  50.                 porownanie=porownanie+2;
  51.                 tab[j]=tab[j-odstep];
  52.                 podstawienie++;
  53.                 tab[j]=temp;
  54.                 podstawienie++;
  55.             }
  56.         }
  57.     }
  58. } O(n^2)
  59.  
  60. int qpodstawienie=0,qporownanie=0;
  61. int partition (int tab[],int lo,int hi){
  62.     int pivot=tab[hi];
  63.     qpodstawienie++;
  64.     int i=lo-1;
  65.     qpodstawienie++;
  66.     int temp1,temp2;
  67.     for (int j=lo;j<hi;j++){
  68.         qpodstawienie++;
  69.         if (tab[j]<=pivot){
  70.             qporownanie++;
  71.             i++;
  72.             temp1=tab[j];
  73.             tab[j]=tab[i];
  74.             tab[i]=temp1;
  75.             qpodstawienie=qpodstawienie+4;
  76.         }
  77.     }
  78.     temp2=tab[i+1];
  79.     tab[i+1]=tab[hi];
  80.     tab[hi]=temp2;
  81.     qpodstawienie=qpodstawienie+3;
  82.     return (i+1);
  83. }
  84.  
  85. void quickSort(int tab[],int lo, int hi){
  86.     if (lo<hi){
  87.         int pi=partition(tab,lo,hi);    //partition index
  88.         qpodstawienie++;
  89.         quickSort(tab,lo,pi-1);
  90.         quickSort(tab,pi+1,hi);
  91.     }
  92. } O(nlogn)
  93.  
  94. void heapify(int tab[], int n, int i) {
  95.     int largest=i;
  96.     int l=2*i+1;
  97.     int r=2*i+2;
  98.  
  99.     if (l<n&&tab[l]>tab[largest]){
  100.         largest=l;
  101.     }
  102.  
  103.     if (r<n&&tab[r]>tab[largest]){
  104.         largest=r;
  105.     }
  106.  
  107.     if (largest!=i){
  108.         int temp=tab[i];
  109.         tab[i]=tab[largest];
  110.         tab[largest]=temp;
  111.         heapify(tab, n, largest);
  112.     }
  113. }
  114.  
  115. void heapSort(int tab[],int n){
  116.     for (int i=n/2-1;i>=0;i--){
  117.         heapify(tab,n,i);
  118.     }
  119.     for (int i=n-1;i>=0;i--){
  120.         int temp=tab[0];
  121.         tab[0]=tab[i];
  122.         tab[i]=temp;
  123.         heapify(tab,i,0);
  124.     }
  125. } O(nlogn)
  126.  
  127. void countingSort(int tab[], int n, int k){
  128.     int tabpom[k];
  129.     for (int i=0;i<k;i++){
  130.         tabpom[i]=0;
  131.     }
  132.     for (int i=0;i<n;i++){
  133.         tabpom[tab[i]]++;
  134.     }
  135.     int m=0;
  136.     for (int i=0;i<k;i++){
  137.         for (int j=0;j<tabpom[i];j++){
  138.             tab[m]=i;
  139.             m++;
  140.         }
  141.     }
  142. } O(n)
  143.  
  144. Tworzenie macierzy sąsiedztwa dla drzewa (globalna macierz M[n][n] jest pierwotnie wyzerowana)
  145.  
  146. void tworz(wsk T){
  147.    if (T!=NULL){
  148.       if (T->l!=NULL){
  149.           M[T->x][T->l->x]=1;
  150.           tworz(T->l);
  151.       }
  152.       if (T->p!=NULL){
  153.           M[T->x][T->p->x]=1;
  154.           tworz(T->p);
  155.       }
  156. }
  157.  
  158. Porównanie metod sortowania - wstawianie w tablicy i wstawianie do listy dynamicznej
  159.    
  160. W obydwu przypadkach liczba porównań jest w pesymistycznym przypadku rzędu O(n^2),
  161. natomiast liczba podstawień - O(n^2) w tablicy oraz O(n) w liście.
  162.  
  163. Odpowiedz: 1 - drzewo zdegenerowane, 0 - w przeciwnym razie
  164.  
  165. int degen(wsk T){
  166.    if (T==NULL){return 1;}
  167.    if ((T->l!=NULL)&&(T->p!=NULL)) {return 0;}
  168.    return (T->l!=NULL) ? degen(T->l) : degen(T->p);
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement