Pagini recente » Cod sursa (job #675178) | Cod sursa (job #809373) | Cod sursa (job #1190755) | Cod sursa (job #842623) | Cod sursa (job #3162463)
#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;
}