

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.
Jáká zas metoda přímého výběru? Vždyť to je normal bubble sort...
toto neni bubble. bubble porovnava susedne prvky. Vid link co som dal vyssie.