Θα ήθελα να ταξινομήσω έναν πίνακα με ακέραιους αριθμούς σε αύξουσα σειρά και για αυτό χρησιμοποίησα (ουσιαστικά αντέγραψα ;-; ) από τις διαφάνειες του μαθήματος την μέθοδο quicksort
. Παρόλα αυτά, ο πίνακας τυπώνεται χωρίς καμία αλλαγή. Άλλαξα τις ονομασίες swap
και partition
γιατί το CodeBlocks τις χρωμάτιζε ως δηλωμένες λέξεις.
#include <cstdio>
void swaping(int &x, int &y){
int save = x;
x = y;
y = save;
}
int partitioning(int A[], int first, int last){
int x = A[(first + last)/2];
int i = first, j=last;
while(true){
while (A[i] < x) i++;
while (x < A[j]) j--;
if (i >= j) break;
swaping(A[i], A[j]);
i++;
j--;
}
return j;
}
void quicksort(int A[], int first, int last){
if(first >= last) return;
int i = partitioning(A, first, last);
quicksort(A, first, i);
quicksort(A, i+1, last);
}
int main(){
int N;
scanf("%d", &N);
int A[N];
for(int i=0; i<N; i++)
scanf("%d", &A[i]);
quicksort(A, A[0], A[N-1]);
for(int i=0; i<N; i++){
printf("%d", A[i]);
printf(" ");
}
}