#include <stdio.h>
char *input_argv[] = { "prog.c", "12", "10", "17", "1", "22" }; // al posto di argv[]
int input_argc = sizeof (input_argv) / sizeof (input_argv[0]); // al posto di argc
int
part (int lista[], int a, int z)
{
// Viene preparata una variabile per lo scambio di
// valori.
int scambio = 0;
// Si assume che «a» sia inferiore a «z».
int i = a + 1;
int cf = z;
// Inizia il ciclo di scansione dell'array.
while (1)
{
while (1)
{
// Sposta «i» a destra.
if ((lista[i] > lista[a]) || (i >= cf))
{
break;
}
else
{
i += 1;
}
}
while (1)
{
// Sposta «cf» a sinistra.
if (lista[cf] <= lista[a])
{
break;
}
else
{
cf -= 1;
}
}
if (cf <= i)
{
// È avvenuto l'incontro tra «i» e «cf».
break;
}
else
{
// Vengono scambiati i valori.
scambio = lista[cf];
lista[cf] = lista[i];
lista[i] = scambio;
i += 1;
cf -= 1;
}
}
// A questo punto lista[a..z] è stata ripartita e «cf» è
// la collocazione di «lista[a]».
scambio = lista[cf];
lista[cf] = lista[a];
lista[a] = scambio;
// A questo punto, lista[cf] è un elemento (un valore)
// nella giusta posizione.
return cf;
}
void
quicksort (int lista[], int a, int z)
{
// Viene preparata la variabile «cf».
int (cf) = 0;
if (z > a)
{
cf = part (lista, a, z);
quicksort (lista, a, cf-1);
quicksort (lista, cf+1, z);
}
}
int
main (int argc, char *argv[])
{
int lista[input_argc - 1];
int i;
// Considera gli argomenti come gli elementi
// dell'array da ordinare.
for (i = 1; i < input_argc; i++)
{
sscanf (input_argv
[i
], "%i", &lista
[i
-1]); }
// Esegue il riordino.
quicksort (lista, 0, input_argc-2);
// Emette il risultato.
for (i = 0; i < (input_argc-1); i++)
{
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyICppbnB1dF9hcmd2W10gPSB7ICJwcm9nLmMiLCAiMTIiLCAiMTAiLCAiMTciLCAiMSIsICIyMiIgfTsgICAgIC8vIGFsIHBvc3RvIGRpIGFyZ3ZbXQppbnQgICBpbnB1dF9hcmdjICAgPSBzaXplb2YgKGlucHV0X2FyZ3YpIC8gc2l6ZW9mIChpbnB1dF9hcmd2WzBdKTsgIC8vIGFsIHBvc3RvIGRpIGFyZ2MKCmludApwYXJ0IChpbnQgbGlzdGFbXSwgaW50IGEsIGludCB6KQp7CiAgICAvLyBWaWVuZSBwcmVwYXJhdGEgdW5hIHZhcmlhYmlsZSBwZXIgbG8gc2NhbWJpbyBkaQogICAgLy8gdmFsb3JpLgoKICAgIGludCBzY2FtYmlvID0gMDsKCiAgICAvLyBTaSBhc3N1bWUgY2hlIMKrYcK7IHNpYSBpbmZlcmlvcmUgYSDCq3rCuy4KCiAgICBpbnQgaSA9IGEgKyAxOwogICAgaW50IGNmID0gejsKCiAgICAvLyBJbml6aWEgaWwgY2ljbG8gZGkgc2NhbnNpb25lIGRlbGwnYXJyYXkuCgogICAgd2hpbGUgKDEpCiAgICAgIHsKICAgICAgICB3aGlsZSAoMSkKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gU3Bvc3RhIMKracK7IGEgZGVzdHJhLgoKICAgICAgICAgICAgaWYgKChsaXN0YVtpXSA+IGxpc3RhW2FdKSB8fCAoaSA+PSBjZikpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaSArPSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMSkKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gU3Bvc3RhIMKrY2bCuyBhIHNpbmlzdHJhLgoKICAgICAgICAgICAgaWYgKGxpc3RhW2NmXSA8PSBsaXN0YVthXSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNmIC09IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgaWYgKGNmIDw9IGkpCiAgICAgICAgICB7CiAgICAgICAgICAgIC8vIMOIIGF2dmVudXRvIGwnaW5jb250cm8gdHJhIMKracK7IGUgwqtjZsK7LgoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAvLyBWZW5nb25vIHNjYW1iaWF0aSBpIHZhbG9yaS4KCiAgICAgICAgICAgIHNjYW1iaW8gPSBsaXN0YVtjZl07CiAgICAgICAgICAgIGxpc3RhW2NmXSA9IGxpc3RhW2ldOwogICAgICAgICAgICBsaXN0YVtpXSA9IHNjYW1iaW87CgogICAgICAgICAgICBpICs9IDE7CiAgICAgICAgICAgIGNmIC09IDE7CiAgICAgICAgICB9CiAgICAgIH0KCiAgICAvLyBBIHF1ZXN0byBwdW50byBsaXN0YVthLi56XSDDqCBzdGF0YSByaXBhcnRpdGEgZSDCq2Nmwrsgw6gKICAgIC8vIGxhIGNvbGxvY2F6aW9uZSBkaSDCq2xpc3RhW2FdwrsuCgogICAgc2NhbWJpbyA9IGxpc3RhW2NmXTsKICAgIGxpc3RhW2NmXSA9IGxpc3RhW2FdOwogICAgbGlzdGFbYV0gPSBzY2FtYmlvOwoKICAgIC8vIEEgcXVlc3RvIHB1bnRvLCBsaXN0YVtjZl0gw6ggdW4gZWxlbWVudG8gKHVuIHZhbG9yZSkKICAgIC8vIG5lbGxhIGdpdXN0YSBwb3NpemlvbmUuCgogICAgcmV0dXJuIGNmOwp9Cgp2b2lkCnF1aWNrc29ydCAoaW50IGxpc3RhW10sIGludCBhLCBpbnQgeikKewogICAgLy8gVmllbmUgcHJlcGFyYXRhIGxhIHZhcmlhYmlsZSDCq2NmwrsuCgogICAgaW50IChjZikgPSAwOwoKICAgIGlmICh6ID4gYSkKICAgICAgewogICAgICAgIGNmID0gcGFydCAobGlzdGEsIGEsIHopOwogICAgICAgIHF1aWNrc29ydCAobGlzdGEsIGEsIGNmLTEpOwogICAgICAgIHF1aWNrc29ydCAobGlzdGEsIGNmKzEsIHopOwogICAgICB9Cn0KCmludAptYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBpbnQgbGlzdGFbaW5wdXRfYXJnYyAtIDFdOwogICAgaW50IGk7CgogICAgLy8gQ29uc2lkZXJhIGdsaSBhcmdvbWVudGkgY29tZSBnbGkgZWxlbWVudGkKICAgIC8vIGRlbGwnYXJyYXkgZGEgb3JkaW5hcmUuCgogICAgZm9yIChpID0gMTsgaSA8IGlucHV0X2FyZ2M7IGkrKykKICAgICAgewogICAgICAgIHNzY2FuZiAoaW5wdXRfYXJndltpXSwgIiVpIiwgJmxpc3RhW2ktMV0pOwogICAgICB9CgogICAgLy8gRXNlZ3VlIGlsIHJpb3JkaW5vLgoKICAgIHF1aWNrc29ydCAobGlzdGEsIDAsIGlucHV0X2FyZ2MtMik7CgogICAgLy8gRW1ldHRlIGlsIHJpc3VsdGF0by4KCiAgICBmb3IgKGkgPSAwOyBpIDwgKGlucHV0X2FyZ2MtMSk7IGkrKykKICAgICAgewogICAgICAgIHByaW50ZiAoIiVpICIsIGxpc3RhW2ldKTsKICAgICAgfQogICAgcHJpbnRmICgiXG4iKTsKCiAgICByZXR1cm4gMDsKfQ==