Se consideră un tablou unidimensional A[n] de numere întregi, n100. Să se un program care va
sorta elementele în ordine descrescătoare din tabloul A. (Se vor utiliza subprograme fără tip la
citirea, sortarea și afișarea tabloului).
Programul trebuie facut in limbajul C in biblioteca stdio.h.
Mersi
Răspunsuri la întrebare
Răspuns:
Programul arata asa:
int v[100]
void afisare( int n ) {
int i;
for ( i = 0; i < n; i ++ ) {
printf( "%d ", v[i] );
}
}
int main() {
int n, i;
scanf( "%d", &n );
for ( i = 0; i < n; i ++ ) {
scanf( "%d", &v[i] );
}
sortare();
afisare( n );
return 0;
}
Explicație:
pentru sortare, am doua functii: quick_sort si select_sort. O alegi pe care vrei:
void quick_sort( int st, int dr ) {
int i = st, j = dr, piv = v[( st + dr ) / 2];
int aux;
while ( v[i] > piv )
i ++;
while ( v[j] < piv )
j --;
while ( i < j ) {
aux = v[i];
v[i] = v[j];
v[j] = aux;
do
i ++;
while ( v[i] > piv );
do
j --;
while ( v[j] < piv );
}
if ( st < j )
quick_sort( st, j );
if ( j + 1 < dr )
quick_sort( j + 1, dr );
}
void select_sort( int n ) {
int maxim, i, j, poz, aux;
for ( i = 0; i < n; i ++ ) {
maxim = v[i];
poz = i;
for ( j = i + 1; j < n; j ++ ) {
if ( v[j] > maxim ) {
maxim = v[j];
poz = j;
}
}
aux = v[i];
v[i] = v[poz];
v[poz] = aux;
}
}
void afisare( int n ) {
int i;
for ( i = 0; i < n; i ++ ) {
printf( "%d ", v[i] );
}
}
int main() {
int n, i;
scanf( "%d", &n );
for ( i = 0; i < n; i ++ ) {
scanf( "%d", &v[i] );
}
sortare();
afisare( n );
return 0;
}
Citește mai multe pe Brainly.ro - https://brainly.ro/tema/6823389#readmore