Selection Sort # Molim Pomoć

poruka: 19
|
čitano: 5.016
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Imam neki zadatak u vezi algoritama, a pojma nemam kako da ga riješim, dobio sam sljedeći 'code':

 

SelectionSort (int n) {
int i, j, Min;
for (i=0;i<n;i++) {
Min=i;
for (j=i+1;j<n;j++)
if (a[Min">>a[j">)
Min=j;
j=a[Min">;
a[Min">=a;
a=j; }
}

 

dat mi je niz brojeva: 10, 7, 8, 6, 1, 4, 9, 5, 2, 3. Trebam ga sortirati u rastućem redoslijedu, primjenom algoritma Selection Sort u jeziku C#. Moram objasnit osnovnu ideju ovog algoritma, moram napisati vrijednosti promjenjivih i, j i Min, koliko je ukupno bilo zamjena vrijednosti članova niza tokom izvršavanja algoritma, a pojma nemam, dat mi je samo taj kod iznad. Molim za pomoć... ne znam kako što...

 
0 0 hvala 0
17 godina
protjeran
offline
RE: Selection Sort # Molim Pomoć

Selection sort radi na način da najmanji element stavlja na početak polja. Znači, uzme se početni indeks, i taj element se proglasi najmanjim (min = i). Tada se provjeri ostatak polja, i ako se nađe manji od min onda se njih dva zamjene. Tada je sortiran nulti element. Onda se za na isti način sortira ostatak polja -  onaj prvi se proglasi najmanjim pa se provjeri ostatak polja. Ima jedna simulacija koju sam još davno napravio pa će ti možda biti jasnije kako to radi:

 

http://forum.sztvz.hr/attachment.php?attachmentid=900&d=1223901133

 

16 godina
neaktivan
offline
RE: Selection Sort # Molim Pomoć

Hvala i još jednom hvala na super izvrsnoj animaciji. Problem je što sam ja nov u programiranju, a želim da naučim, ja pojma nemam kako što ispisati.

 

Kada napišem SelectionSort (int n)... i ostatak koda, SelectionSort mi je iz nekog razloga 'underlined', a ne znam zašto, ako umjesto int n napišem (int 10, 8,7...), onda mi je to podvučeno, tako da nikako da napravim da radi... please somoeone...

16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

...i animacija bi ti bila savršena kad bi još ispisala 'code' Smijeh

 
0 0 hvala 0
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Može li mi netko napisat primjer rješenja? Please?

 
0 0 hvala 0
17 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Tvoj kod je zapravo funkcija.

 

Ona mora imati definirano koji tip podatka vraca. Primjerice

 

int SelectionSort(int n)

{

.......

}

 

void SelectionSort(int n)

{

.........

}

 

itd.

 

 

plus, evo sto sam dobio tako sto sam u google upisao c++ funkcije

 

http://ss-zagreb-550.skole.t-com.hr/C++/lekcija_funkcije.htm

 

probaj procitat, mozda ti bude jasnije.

Rjesava jednostavne probleme u podforumu Programiranje od 2008. xD http://irale.deviantart.com
Poruka je uređivana zadnji put ned 31.1.2010 21:28 (RaLe).
 
0 0 hvala 0
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Koliko sam shvatio, dati 'code' ne treba više dirat, nego samo npr. u Word-u ispisat niz brojeva koji se iz koraka u korak redaju 'ozakonjenom' metodom Selection Sort, ascendentnim redoslijedom.

 

I wow jest odlična animacija, mogao bih ju gledat cijeli dan :)

 

I'm a software freak who hates algorithms :)

 
0 0 hvala 0
17 godina
offline
Selection Sort # Molim Pomoć

Ja sam ti pogledao tutoriale C# i na ovdje je objašnjen SelectionSort

Ako postaviš code na ovaj način, radit će 100%, a ovaj kod je dosta sličan i školskom primjeru C++ , probaj najprije analizirati školski primjer da ga skužiš, pa onda funkciju, doduše primjećivam da ti u svom codu nemaš pomoćnu varijablu

 

// array of integers to hold values
private int[] a = new int[100];

// number of elements in array
private int x;

// Selection Sort Algorithm
public void sortArray()
{
int i, j;
int min, temp;

for( i = 0; i < x-1; i++ )
{
min = i;

for( j = i+1; j < x; j++ )
{
if( a[j] < a[min] )
{
min = j;
}
}

temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}

Poruka je uređivana zadnji put ned 31.1.2010 22:30 (Floki).
 
0 0 hvala 0
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Hvala, kada ispišem svoj 'code' iznad u C#, funkcija SelectionSort mi bude podvučena, kada umjesto (int n) uvrstim (int 10, 8, 7 "i ostale brojeve") - onda mi to bude podvučeno, a pošto sam nov u programiranju - pojma nemam kako da riješim to. Razumijem o čemu se radi i sve to, ali jednostavno, kako god da ispišem 'code' - neće da mi ga izvrši. Tako da ja ispade super glup sam sebi i ovdje pred čitavom zajednicom brainiaca (which means that I admire you), a zapravo sam nedovoljno educiran. Neodlučan

Poruka je uređivana zadnji put ned 31.1.2010 22:35 (gentlehouse).
 
0 0 hvala 0
17 godina
offline
RE: Selection Sort # Molim Pomoć
gentlehouse kaže...

Hvala, kada ispišem svoj 'code' iznad u C#, funkcija SelectionSort mi bude podvučena, kada umjesto (int n) uvrstim (int 10, 8, 7 "i ostale brojeve") - onda mi to bude podvučeno, a pošto sam nov u programiranju - pojma nemam kako da riješim to. Razumijem o čemu se radi i sve to, ali jednostavno, kako god da ispišem 'code' - neće da mi ga izvrši. Tako da ja ispade super glup sam sebi i ovdje pred čitavom zajednicom brainiaca (which means that I admire you), a zapravo sam nedovoljno educiran. Neodlučan

n je kod tebe n=10,

a polje ti je a, njega ovdje uopće ne unosiš, ili bar ja ne vidim da ga imaš gdje unijeti

daKLE, njega vjerojatno unosiš u glavnoj funkciji, pa je ovo nepotpuni kod , ja znam kako bi to napisao u c++, a za c# valjda ima koji expert

uglavnom n ti je broj elemenata polja, a varijabla a ti predstavlja polje

Poruka je uređivana zadnji put ned 31.1.2010 22:47 (Floki).
16 godina
neaktivan
offline
RE: Selection Sort # Molim Pomoć

Eeee super, mogu radit u C++ ili u C#, odabrat ću C++

 

Hvala ti Floki!

 

Pa da, 'n' je uvijek predstavljalo broj elemenata skupa, kako se sad kajem što nisam poštovao profesoricu iz matematike... Izlanuo se

17 godina
offline
RE: Selection Sort # Molim Pomoć
gentlehouse kaže...

Eeee super, mogu radit u C++ ili u C#, odabrat ću C++

 

Hvala ti Floki!

 

Pa da, 'n' je uvijek predstavljalo broj elemenata skupa, kako se sad kajem što nisam poštovao profesoricu iz matematike... Izlanuo se

ako ćeš c++, ja ti mogu dati školski primjer

16 godina
neaktivan
offline
RE: Selection Sort # Molim Pomoć

Može li sa ovim brojevima iznad u mojem zadatku?

 

...i ej Floki, dužnik sam ti!

17 godina
offline
Selection Sort # Molim Pomoć

#include<iostream>

using namespace std;

 

void main() {

        int i, j, min, pom, polje[10]={10, 7, 8, 6, 1, 4, 9, 5, 2, 3};

 

        // SelectionSort

        for(i=0; i<10; i++) {

             min=i;

             for(j=i+1; j<10; j++)

                  if(polje[j] < polje[min]) min=j;

             pom=polje[i];

             polje[i]=polje[min];

             polje[min]=pom;

        }

 

        for(i=0; i<10; i++)

           cout<<  polje[i] << "\t";

      }

 

 

 

Evo, isprobao sam, radi u Visual C++ 2008 , sad ti analiziraj kako kod radi, a ovo je školski primjer, od koga, znamoCool

 

analiza:

prvi korak ti je:

7, 10. 8, 6, 1, 4, 9, 5, 2, 3

dalje nastavi sam . . .

Poruka je uređivana zadnji put ned 31.1.2010 23:21 (Floki).
 
0 0 hvala 0
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

'Code' nigdje nije 'underlined', stoji čvrsto, ali kad htjednem da ga izvršim - izjavi mi: The system cannot find the path specified.

 

Koristim isti software kao i ti, code sam stavio u Windows Form Application.

 

Nekako ću se probat snać, nema spavanja dok to ne odradim...

 

Floki, bio si mi od velike pomoći! Hvala ti!

 

pozdrav!

 
0 0 hvala 0
17 godina
offline
RE: Selection Sort # Molim Pomoć
gentlehouse kaže...

'Code' nigdje nije 'underlined', stoji čvrsto, ali kad htjednem da ga izvršim - izjavi mi: The system cannot find the path specified.

 

Koristim isti software kao i ti, code sam stavio u Windows Form Application.

 

Nekako ću se probat snać, nema spavanja dok to ne odradim...

 

Floki, bio si mi od velike pomoći! Hvala ti!

 

pozdrav!

Evo ovdje pogledaj kako ćeš napraviti konzolnu aplikaciju sa Visual C++ 2008

16 godina
neaktivan
offline
RE: Selection Sort # Molim Pomoć

Sad radi odlično! Ej baš si mrak čovječe, nesebično spreman na pomoć, rijetki su takvi ljudi, bila mi je čast!

 

(samo čudi me kako da je u sljedećem koraku 'sedmica' na prvom mjestu, a ne jedinica...)

17 godina
offline
RE: Selection Sort # Molim Pomoć
gentlehouse kaže...

Sad radi odlično! Ej baš si mrak čovječe, nesebično spreman na pomoć, rijetki su takvi ljudi, bila mi je čast!

 

(samo čudi me kako da je u sljedećem koraku 'sedmica' na prvom mjestu, a ne jedinica...)

ops, sorry, moja greška,dakle kod prvog prolaska petlje for(i=0; i<10; i++); tj. kod vrijednosti i=0 dobiješ prvo premještanje vrijednosti na ovaj način :

1 korak: 1, 7, 8, 6, 10, 4, 9, 5, 2, 3

 

Bitno je uočiti da se dio koda : pom=polje[i];

                                                 polje[i]=polje[min];

                                                 polje[min]=pom;

izvršava tek kad druga petlja for(j=i+1; j<10; j++) prođe cijeli ciklus do vrijednosti 10 i u tom ciklusu pomoću naredbe if varijabla min dobije vrijednost koja je u stvari indeks najmanjeg mjesta u polju koje je iza mjesta polje[i], nakon toga gornji kod vrši zamjenu vrijednosti koje se nalazi na polje[i] sa najmanjom vrijednosti koje je iza njega (polje[min]), a varijabla pom ti treba da tu zamjenu obaviš

uglavnom, sad je vidljivo kako se mijenjaju vrijednosti varijabli i, j, min. A cijela filozofija algoritma se sastoji u tome da spomenute varijable koristiš kao indexe elemenata polja kojeg sortiraš

iz tracerove simulacije je vizualno super vidljivo kako algoritam radi

sorry na previdu

 

 

p.s. evo ti prijedloga za zafrkanciju kojeg ćeš vrlo lako riješiti kad skužiš kako algoritam radi - izmjenom jednog jedinog znaka u kodu umjesto rastućeg redosljeda 1, 2, 3 . . . možeš dobiti padajući redosljed 10, 9, 8 . . .

Poruka je uređivana zadnji put pon 1.2.2010 13:17 (Floki).
16 godina
neaktivan
offline
Selection Sort # Molim Pomoć

Da, to mi je drugi zadatak kojeg moram uradit sa Insertion Sort, u descendentnom nizu iste brojeve složit. Malim čačkanjem po kodu uradio sam ovo na sljedećem dijelu koda:

 

ascendentno:  for(j=i+1; j<10; j++)

 

descendentno:  for(j=i+1; j>10; j--)

 

i radi Cool

 

Thanks my friend...

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice