Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include<stdio.h> #include<stdlib.h> void Swap(int* a, int* b){ int temp = *a; *a = *b; *b = temp; } int Partition(int* data, int left, int right){ int x = data[right]; int i = (left - 1); for (int j = left; j <= right - 1; ++j) { if (data[j] <= x) { ++i; Swap(&data[i], &data[j]); } } Swap(&data[i + 1], &data[right]); return (i + 1); } void QuickSort(int* data, int count) { int i = 0; int j = count - 1; int f = -1; int* stack = (int*)malloc(sizeof(int) * count); stack[++f] = i; stack[++f] = j; while (f >= 0) { j = stack[f--]; i= stack[f--]; int p = Partition(data, i, j); if (p - 1 > i) { stack[++f] = i; stack[++f] = p - 1; } if (p + 1 < j) { stack[++f] = p + 1; stack[++f] = j; } } free(stack); } void imprimir(int v[], int tam){ int i; for (i=0; i < tam; i++) printf("%d ", v[i]); printf("\n"); } int main(){ int v[10] = {10,9,8,7,6,5,4,3,2,1}; int n = sizeof(v)/sizeof(v[0]); imprimir(v,10); QuickSort(v,n); printf("\n\n"); imprimir(v,10); return(0); }
Compartilhar