Tot_zeu Posted September 13, 2007 Report Posted September 13, 2007 Salut!Sunt tot zeu si impreuna cu mine astazi veti invata un tip de sortare remarcabil mai ales la vectori cu dimensiuni modeste deci sa ii dam drumul:Banuiesc ca stiti ce inseamna o sortare,daca nu va voi reaminti:Este un procedeu prin care o anumita multime poate fi adusa intr o anumita ordine aleasa.Tin sa reamintesc ca aici nu sortam farfurii si sortarile sunt de 2 tipuri:lexicografice si numerice.In continuare vom invata cum sa sortam un vector de tipul intreg (deci vom sorta numeric) + ca vom face si un micut GUI pentru programul nostru.Metoda aleasa de sortare se numeste sortare selectiva.o sa va explic cateva concepte:metoda se bazeaza pe urmatorul concept:->luam primul element din vector->gasim minimul elementelor de dupa primul element(cel luat in "prima" faza)->repetam operatia asta cu urmatorul element din vector..adica al doilea,si asa mai departe pana sortam totsa va arat un exemplu concret:Fie vectorul:5 4 3 2 1 in prima faza:1 4 3 2 5apoi:1 2 3 4 5Si gata..am sortat acest sir.Simplu,nu?Acum sa luam si un program propriu-zis:Eu am lucrat programul in Visual Basic NET:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer Dim b() As String // vector pe care il vom sorta Dim x As Integer //declaratii Dim minim As Integer Dim separator As String separator = "," //pt functia split If TextBox1.Text <> " " Then //in textbox punem elementele care vrem sa le sortam separate prin virgula b = TextBox1.Text.Split(separator) //folosim functia split pt a introduce elementele din textbox in vector(seapara dupa virgulita) For i = 0 To UBound( b(i) = Val(b(i)) //acum facem conversia elementelor din string in integer deoarece tot ce se vine din textbox e string Next End If For i = 0 To (UBound( - 1) //algoritmul propriu zis,facem n-1 "scanari" minim = i For j = i + 1 To UBound( If (b(j) < b(minim)) Then //cautam daca exista vreun element dupa primul element care sa FIE MAI MIC minim = j //daca gaseste il baga aici End If Next x = b(i) //aici le schimba intre ele b(i) = b(minim) b(minim) = x Next For i = 0 To UBound( MsgBox(b(i)) //afisaj elem sortate Next End SubEnd ClassObservati de exemplu daca dam siru sortat deja cum nu gaseste minim..fiecare element o sa se interschimbe cu el insusi.Daca doriti programu il puteti lua de aici Download.Va trebuie .Net freamwork ca sa rulati.pana dat viitoare cand explic Quick Sort si Shell sort sau poate si altele..ma mai gandesc va invit sa incercati si voi algoritmul sa l intelegeti si sa l implementati in limbaju vostru. Quote
moubik Posted September 14, 2007 Report Posted September 14, 2007 bine ma ca faci tutoriale. dragutz din partea ta.mie mi se pare destul sa stiuquicksort si radixsort.quicksoft rapid, usor de implementat. radix, stringuri, dar merge si pe numere. ce pot sa vreau mai mult? daca am 2 vectori ce trebuie mergiuiti, nu e nevoie sa stiu algoritm pt asta, e foarte logic. anyway imi place ca ii inveti pe copii Quote
Tot_zeu Posted September 14, 2007 Author Report Posted September 14, 2007 Vrei sa fac si pt Quick Sort sau shell sort?ma gandeam dupa asta sa fac si buble sort.Nu toti isi dau seama Quote
moubik Posted September 14, 2007 Report Posted September 14, 2007 nu, pentru mine nu e nevoie. sa ceara oamenii. Quote