Misipuk

Bug

Nov 18th, 2017
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define R 100
  4. #define RAND(R) rand()%R
  5. #define N 10
  6. #define CNT_PRN printf("Count compare: %ld\nCount copy: %ld\n\n", cnt_cmp, cnt_cpy);
  7.  
  8. long cnt_cmp, cnt_cpy;//просто ни нада так делать
  9.  
  10. int best_array(int a[], int n);
  11. int worst_array(int a[], int n);
  12. int avg_array(int a[], int n, int k);
  13. int printf_array(int a[], int n);
  14. int bubble_sort(int a[], int n);
  15. int merge(int array[],int left,int m, int right);
  16. int merge_sort(int a[], int n);
  17.  
  18. int main(int argc, char *argv[]) {
  19.     int array[N];
  20.     printf("BUBBLE:\n");
  21.     best_array(array, N);
  22.     bubble_sort(array, N);
  23.     CNT_PRN
  24.     cnt_cmp = cnt_cpy  = 0;
  25.     avg_array(array, N, 10);
  26.     CNT_PRN
  27.     cnt_cmp = cnt_cpy  = 0;
  28.     worst_array(array, N);
  29.     bubble_sort(array, N);
  30.     CNT_PRN
  31.     return 0;
  32. }
  33.  
  34. int best_array(int a[], int n){
  35.     int i=0;
  36.     for(i=0;i<n;i++) a[i]=i;
  37.     return i;
  38. }
  39.  
  40. int worst_array(int a[], int n){
  41.     int i=0;
  42.     for(i=0;i<n;i++) a[i]=n-1-i;
  43.     return i;
  44. }
  45.  
  46. int avg_array(int a[], int n, int k){
  47.     int i=0, j=0;
  48.     for(j=0;j<k;j++){
  49.         srand(j);
  50.         for(i=0;i<n;i++) a[i]=RAND(R);
  51.         bubble_sort(a,n);
  52.     }
  53.     cnt_cmp/=k;
  54.     cnt_cpy/=k;
  55.     return j;
  56. }
  57.  
  58. int printf_array(int a[], int n){
  59.     int i=0;
  60.     for(i=0;i<n;i++) printf("%d\t", a[i]);
  61.     printf("\n\n");
  62.     return i;
  63. }
  64.  
  65. int bubble_sort(int a[], int n){
  66.     int temp=0, r=n-1, i=0, k=0;
  67.     while(r>0){
  68.         k=0;
  69.         for (i=0; i<r; i++){
  70.             cnt_cmp++;
  71.             if(a[i]>a[i+1]){
  72.                 temp = a[i];
  73.                 a[i]=a[i+1];
  74.                 a[i+1]=temp;
  75.                 cnt_cpy +=3;
  76.                 k=i;
  77.             }
  78.         }
  79.         r=k;
  80.     }
  81. }
  82.  
  83. int merge(int array[],int left,int m, int right){//compares two sorted arrays
  84.     int i=0, j=0, k=0, n_left=0, n_right=0;
  85.     n_left = m-left+1;
  86.     n_right = right - m;
  87.     int L[n_left+1];
  88.     int R[n_right+1];
  89.     for(i=0; i<n_left; i++){
  90.         L[i]=array[left+i];
  91.     }
  92.     for(j=0; j<n_right; j++){
  93.         R[j]=array[m+1+j];
  94.     }
  95.     L[n_left] = 99999;
  96.     R[n_right] = 99999;
  97.     i=j=0;
  98.     for(k=left; k<=right; k++){
  99.         if (L[i]<R[j]){
  100.             array[k++]=L[i++];
  101.         }else{
  102.             array[k++]=R[j++];
  103.         }
  104.     }
  105. }
  106.  
  107. int merge_sort(int a[], int n){
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment