Jump to content
Tot_zeu

Sortari

Recommended Posts

Posted

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 tot

sa va arat un exemplu concret:

Fie vectorul:

5 4 3 2 1 

in prima faza:

1 4 3 2 5

apoi:

1 2 3 4 5

Si 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 Sub
End Class

Observati 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.

Posted

bine ma ca faci tutoriale. dragutz din partea ta.

mie mi se pare destul sa stiu

quicksort 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...