Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void qs(int *s_arr, int first, int last)
- {
- if (first < last)
- {
- int left = first, right = last, middle = s_arr[(left + right) / 2];
- do
- {
- while (s_arr[left] < middle) left++;
- while (s_arr[right] > middle) right--;
- if (left <= right)
- {
- int tmp = s_arr[left];
- s_arr[left] = s_arr[right];
- s_arr[right] = tmp;
- left++;
- right--;
- }
- } while (left <= right);
- qs(s_arr, first, right);
- qs(s_arr, left, last);
- }
- }
- void bubble(int *a,int n)
- {
- int i,l;
- for(i = 0 ; i < n - 1; i++) {
- for(l = 0 ; l < n - i - 1 ; l++) {
- if(a[l] > a[l+1]) {
- int c = a[l];
- a[l] = a[l+1] ;
- a[l+1] = c;
- }
- }
- }}
- int main()
- {
- int r, t;
- printf("Choose array input method: \n1 - auto\n2 - by user\n");
- scanf("%d", &t);
- while ((t!=1)&&(t!=2)){
- printf("\nerror. wrong input\n");
- printf("Choose array input method: \n1 - auto\n2 - by user\n");
- scanf("%d", &t);
- }
- printf("Choose array input method: \n1 - enter number of elements \n2 - 0-determined end of array\n");
- scanf("%d", &r);
- while (((r!=1)&&(r!=2))||((t==1)&&(r==2))){
- printf("\nerror wrong input\n");
- printf("Choose array input method: \n1 - enter number of elements \n2 - 0-determined end of array\n");
- scanf("%d", &r);
- }
- int a[100], i, n;
- if (r==1) {
- printf("\nWrite number of elements\n");
- scanf("%d", &n);
- if(t==2){
- printf("\nenter elements\n");
- for(i=0; i<n; i++) scanf("%d", &a[i]);
- }
- else for(i=0; i<n; i++) a[i]=rand();
- }
- else {
- n=0;
- printf("\nenter elements, zero to stop\n");
- scanf("%d", &a[0]);
- while(a[n]!=0){
- n+=1;
- scanf("%d", &a[n]);
- }
- }
- printf("choose sorting method\n1-quicksort\n2-bubblesort\n");
- scanf("%d",&t);
- if (t==1) qs(a,0,n-1);
- if (t==2) bubble(a,n);
- for(i=0; i<n; i++) printf("%d ", a[i]);
- printf("\n");
- int b[100];
- b[0]=a[0];
- int n1=0;
- for (i=0; i<n; i++) {
- if(a[i]!=b[n1]){
- n1+=1;
- b[n1]=a[i];
- }
- }
- n1+=1;
- for(i=0; i<n1; i++) printf("%d ", b[i]);
- int min, max;
- printf("\nvvedite nomer maximuma\n");
- scanf("%d", &max);
- while(max>n1){
- printf("\nnomer maximuma bolshe kolicestva raznih elementov(%d)", n1);
- printf("\npoprobuite eshe raz\n");
- scanf("%d", &max);
- }
- printf("\nvvedite nomer minimuma\n");
- scanf("%d", &min);
- while(min>n1){
- printf("\nnomer minimuma bolshe kolichestva raznih elementov(%d)", n1);
- printf("\npoprobuite eshe raz\n");
- scanf("%d", &min);
- }
- printf("\n%d maximum: %d", max, b[n1-max]);
- printf("\n%d minimum: %d", min, b[min-1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement