Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void qs(int *s_arr, int first, int last)
  4. {
  5.     if (first < last)
  6.     {
  7.         int left = first, right = last, middle = s_arr[(left + right) / 2];
  8.         do
  9.         {
  10.             while (s_arr[left] < middle) left++;
  11.             while (s_arr[right] > middle) right--;
  12.             if (left <= right)
  13.             {
  14.                 int tmp = s_arr[left];
  15.                 s_arr[left] = s_arr[right];
  16.                 s_arr[right] = tmp;
  17.                 left++;
  18.                 right--;
  19.             }
  20.         } while (left <= right);
  21.         qs(s_arr, first, right);
  22.         qs(s_arr, left, last);
  23.     }
  24. }
  25. void bubble(int *a,int n)
  26. {
  27. int i,l;
  28. for(i = 0 ; i < n - 1; i++) {
  29.    for(l = 0 ; l < n - i - 1 ; l++) {
  30.        if(a[l] > a[l+1]) {
  31.           int c = a[l];
  32.           a[l] = a[l+1] ;
  33.           a[l+1] = c;
  34.        }
  35.     }
  36. }}
  37. int main()
  38. {
  39.     int r, t;
  40.     printf("Choose array input method: \n1 - auto\n2 - by user\n");
  41.     scanf("%d", &t);
  42.     while ((t!=1)&&(t!=2)){
  43.         printf("\nerror. wrong input\n");
  44.         printf("Choose array input method: \n1 - auto\n2 - by user\n");
  45.         scanf("%d", &t);
  46.     }
  47.     printf("Choose array input method: \n1 - enter number of elements  \n2 - 0-determined end of array\n");
  48.     scanf("%d", &r);
  49.     while (((r!=1)&&(r!=2))||((t==1)&&(r==2))){
  50.         printf("\nerror wrong input\n");
  51.         printf("Choose array input method: \n1 - enter number of elements  \n2 - 0-determined end of array\n");
  52.         scanf("%d", &r);
  53.     }
  54.     int a[100], i, n;
  55.     if (r==1) {
  56.         printf("\nWrite number of elements\n");
  57.         scanf("%d", &n);
  58.         if(t==2){
  59.             printf("\nenter elements\n");
  60.             for(i=0; i<n; i++) scanf("%d", &a[i]);
  61.         }
  62.         else for(i=0; i<n; i++) a[i]=rand();
  63.     }
  64.     else {
  65.         n=0;
  66.         printf("\nenter elements, zero to stop\n");
  67.         scanf("%d", &a[0]);
  68.         while(a[n]!=0){
  69.             n+=1;
  70.             scanf("%d", &a[n]);
  71.         }
  72.     }
  73.     printf("choose sorting method\n1-quicksort\n2-bubblesort\n");
  74.     scanf("%d",&t);
  75.     if (t==1) qs(a,0,n-1);
  76.     if (t==2) bubble(a,n);
  77.     for(i=0; i<n; i++) printf("%d ", a[i]);
  78.     printf("\n");
  79.     int b[100];
  80.     b[0]=a[0];
  81.     int n1=0;
  82.     for (i=0; i<n; i++) {
  83.         if(a[i]!=b[n1]){
  84.             n1+=1;
  85.             b[n1]=a[i];
  86.         }
  87.     }
  88.     n1+=1;
  89.     for(i=0; i<n1; i++) printf("%d ", b[i]);
  90.     int min, max;
  91.     printf("\nvvedite nomer maximuma\n");
  92.     scanf("%d", &max);
  93.     while(max>n1){
  94.         printf("\nnomer maximuma bolshe kolicestva raznih elementov(%d)", n1);
  95.         printf("\npoprobuite eshe raz\n");
  96.         scanf("%d", &max);
  97.     }
  98.     printf("\nvvedite nomer minimuma\n");
  99.     scanf("%d", &min);
  100.     while(min>n1){
  101.         printf("\nnomer minimuma bolshe kolichestva raznih elementov(%d)", n1);
  102.         printf("\npoprobuite eshe raz\n");
  103.         scanf("%d", &min);
  104.     }
  105.     printf("\n%d maximum: %d", max, b[n1-max]);
  106.     printf("\n%d minimum: %d", min, b[min-1]);
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement