Cod sursa(job #3162459)

Utilizator razviOKPopan Razvan Calin razviOK Data 29 octombrie 2023 12:13:21
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <stdio.h>
#include <stdlib.h>
#include "Profiler.h"

int Partition(int *A,int low,int high,int piv){
    int pivot=piv;
    int i=low;
    int j=high;
    int aux;
    while(i<j) {

        while (A[i] < A[pivot])
            i++;

        while (A[j] > A[pivot])
            j--;

        if (i < j) {
            aux = A[i];
            A[i] = A[j];
            A[j] = aux;
            i++;
            j--;
        }
    }

    if(A[j]>A[pivot])
        j--;

    aux=A[j];
    A[j]=A[pivot];
    A[pivot]=aux;

    return j;
}
void QuickSortv1(int *A,int low,int high){

    if(low<high) {
        int pivot = Partition(A, low, high, low);
        QuickSortv1(A, low, pivot);
        QuickSortv1(A, pivot + 1, high);
    }

}
void PrintArray(int *A,int size){

   // printf("\n");
    for(int i=0;i<size;i++)
        printf("%d ",A[i]);

}
void DemoQuickSort()
{

    int size=14;
    int *A=(int *)malloc(sizeof(int)*size);
    FillRandomArray(A,size,10,100,false,UNSORTED);
    PrintArray(A,size);
    QuickSortv1(A,0,size-1);
    PrintArray(A,size);
}
int main() {

    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
   // DemoQuickSort();

    int N;
    scanf("%d",&N);
    int *Array=(int *)malloc(sizeof(int)*N);
    for(int i=0;i<N;i++)
        scanf("%d",&Array[i]);

    QuickSortv1(Array,0,N-1);
    PrintArray(Array,N);

    
    return 0;
}