Добавил:
okley
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2 семестр / lab15
.c#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 семестр
