Skip to content

Instantly share code, notes, and snippets.

@megarubber
Created March 18, 2024 14:22
Show Gist options
  • Save megarubber/3a8263af74bba8bfe12c093822d1dcc9 to your computer and use it in GitHub Desktop.
Save megarubber/3a8263af74bba8bfe12c093822d1dcc9 to your computer and use it in GitHub Desktop.
Quicksort in C
#include <stdio.h>
#include <stdlib.h>
// Returns the pivot
int partition(int *vet, int p, int r) {
int q = vet[r], i = p - 1, j = 0, temp = 0;
for(j = p; j < r - 1; j++) {
if(vet[j] < q) {
i++;
temp = vet[i];
vet[i] = vet[j];
vet[j] = temp;
}
}
i++;
temp = vet[i];
vet[i] = vet[r];
vet[r] = temp;
return i;
}
void quicksort(int *vet, int p, int r) {
if(p < r) {
int a = partition(vet, p, r);
quicksort(vet, p, a - 1);
quicksort(vet, a + 1, r);
}
}
int main() {
int* array = (int*)malloc(sizeof(int) * 9);
int i = 0;
array[0] = 3;
array[1] = 7;
array[2] = 8;
array[3] = 5;
array[4] = 2;
array[5] = 1;
array[6] = 9;
array[7] = 5;
array[8] = 4;
quicksort(array, 0, 9);
for(i = 0; i < 9; i++)
printf("%d ", array[i]);
printf("\n");
free(array);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment