#include <stdio.h> int partition(int array[] , int low , int high){ int pivot = array[high] ; int i = (low - 1) ; for(int j = low ; j < high ; ++j ){ if(array[j] <= pivot){ ++i ; int temp = array[i] ; array[i] = array[j] ; array[j] = temp ; } } int temp = array[i + 1] ; array[i + 1] = array[high] ; array[high] = temp ; return (i + 1); } void QuickSort(int *array , int low , int high){ if (low < high){ int Pi = patition(array , low , high) ; QuickSort(array , low , Pi -1 ) ; QuickSort(array , Pi + 1 , high) ; } } int main(int argc , char *argv[]) { int arr[7] = { 8, 7, 2, 1, 0, 9, 6 } ; QuickSort(arr , 0 , sizeof(arr) / sizeof(arr[0]) - 1); }#include<stdio.h> #define MAX 100 int insert_array(int a[]) { int n, i; printf("Quanti elementi?: "); scanf("%d", &n); for (i=0; i<n; i++) { printf("elemento %d: ", i); scanf("%d", &a[i]); } return(n); } void stampa_array(int a[], int n) { int i; for (i=0; i<n; i++) { printf("%d ", a[i]); } printf("\n"); return; } void quicksort(int a[MAX],int primo,int ultimo){ int i, j, pivot, temp; /*pivot -- inizialmente il pivot è il primo elemento primo e ultimo sono le due variabili che servono per scorrere l'array */ if(primo<ultimo){ pivot=primo; i=primo; j=ultimo; while(i<j){ while(a[i]<=a[pivot]&&i<ultimo) i++; while(a[j]>a[pivot]) j--; if(i<j){ temp=a[i]; a[i]=a[j]; a[j]=temp; } } temp=a[pivot]; a[pivot]=a[j]; a[j]=temp; quicksort(a,primo,j-1); quicksort(a,j+1,ultimo); } } int main(){ int n, a[MAX],i; n = insert_array(a); printf("Array iniziale: "); stampa_array(a,n); quicksort(a,0,n-1); printf("Array ordinato con quick-sort: "); stampa_array(a,n); return 0; }int cmpfunc (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); }