

C - seřazení čísel - metoda přímého výběru
Zdravím. Nemůžu přijít na kloub jednomu prográmku, který jsme dělali na cvičení. Zadávají se čísla a program je poté seřadí od nejmenšího po největší a naopak. Psal jsem tam poznámky, čemu ještě rozumím a čemu už ne. Mohl by mi to prosím někdo vysvětlit, jak program seřazuje čísla? Děkuji.
#include <stdio.h>
#include <stdlib.h>
int main()
{
double v[100],p; //v bude pole o poctu 100 prvku, kazdy o velikosti 8B
printf("\nSetrideni zadanych cisel vzestupne a sestupne metodou primeho vyberu"
"\n--------------------------------------------------------------------\n");
for( i=0 ; ; i++) //cyklus pro i zacinajici od nuly (pro potreby adresovani)
{
printf("\nZadej v[%2d] : ",i+1); //zadam i+1 prvek, protoze to zacina od 0 a ja chci mit pocet prvku od 1
if((scanf("%lf",&v[i])) == EOF)break; //ctu a zapisuji prvky do pole, zapis ukoncim Ctrl+Z
}
n=i; //pocet zadanych prvku ulozim do n
for( i=0 ; i<n-1 ; i++) //prvky od 0 po n-1
{
for( j=i+1 ; j<n ; j++) //nejaka pomocna promenna j
{
if( v[i] > v[j] ){ p=v[i]; v[i]=v[j]; v[j]=p; } //nerozumim
}
}
//vypis setridenych dat na obrazovku
printf("\nVzestupne a Sestupne");
for( i=0 ; i<n ; i++ )
{
printf("\n%8.2lf %8.2lf",v[i],v[n-1-i]);
}
return 0;
}
if( v[i] > v[j] ){ p=v[i]; v[i]=v[j]; v[j]=p; } //nerozumim
Pokud je i-tý prvek větší než j-tý, prohoď jejich hodnoty (s použitím pomocné proměnné p).
Jo tak.. A důvod toho prohození asi bude vycházet z té metody přímého výběru že? Tak to budu muset nastudovat..
ano metody si budes muset nastudovat. Neni to nic komplikovane
http://cs.wikipedia.org/wiki/%C5%98adic%C3%AD_algo ritmus#B.C4.9B.C5.BEn.C3.A9_algoritmy
Díky za odkaz. Už jsem to pochopil.