Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
16.11.2025
Размер:
1.56 Кб
Скачать
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int A[25];
int n;
int srv=0;
int prsv=0;
int Prandom(int range_min, int range_max){ // Функция для произвольного диапазона случайных числен
    int r = ((double)rand() / RAND_MAX) * (range_max - range_min) + range_min;
    return(r);
}
void swap(int *x, int *y){
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
    prsv+=3;
}
void QuickSort(int first, int last)
{
    int pivot;
    int l,r;
    l=first; r=last;
    pivot=A[(l+r)/2];
    prsv++;
    while (l<=r) {
            while (A[l]<pivot){
                    l++;
                    srv++;
                    }
            srv++;
            while (A[r]>pivot){
                    r--;
                    srv++;
                    }
            srv++;
            if (l<=r) {
                    if(l-r) swap(&A[l],&A[r]);
                    if(l-r) mPrint(n);
                    l++;
                    r--;
            }
        }
    if (first<r) QuickSort(first,r);
    if (l<last) QuickSort(l,last);
}
void mPrint(int n){
    int l;
    for(l=0; l<n; l++){
        printf("%3d", l+1);
    }
    printf("\n");
    for(l=0; l<n; l++){
        printf("%3d", A[l]);
    }
    printf("\n");
    printf("\n");
}
int main(void){
    int i;
    scanf("%d", &n);
//    for(i=0; i<n; i++){
//        A[i]=Prandom(1, 100);
//    }
    for(i=0; i<n; i++){
        scanf("%d", &A[i]);
    }
    mPrint(n);
    QuickSort(0, (n-1));
    printf("%d %d\n", prsv, srv);
}
Соседние файлы в папке 2 семестр