sort.lua 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. $debug
  2. function quicksort(r,s)
  3. if s<=r then return end -- caso basico da recursao
  4. local v=x[r]
  5. local i=r
  6. local j=s+1
  7. i=i+1; while x[i]<v do i=i+1 end
  8. j=j-1; while x[j]>v do j=j-1 end
  9. x[i],x[j]=x[j],x[i]
  10. while j>i do -- separacao
  11. i=i+1; while x[i]<v do i=i+1 end
  12. j=j-1; while x[j]>v do j=j-1 end
  13. x[i],x[j]=x[j],x[i]
  14. end
  15. x[i],x[j]=x[j],x[i] -- undo last swap
  16. x[j],x[r]=x[r],x[j]
  17. quicksort(r,j-1) -- recursao
  18. quicksort(j+1,s)
  19. end
  20. function sort(a,n) -- selection sort
  21. local i=1
  22. while i<=n do
  23. local m=i
  24. local j=i+1
  25. while j<=n do
  26. if a[j]<a[m] then m=j end
  27. j=j+1
  28. end
  29. a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
  30. i=i+1
  31. end
  32. end
  33. function main()
  34. x=@()
  35. n=-1
  36. n=n+1; x[n]="a"
  37. n=n+1; x[n]="waldemar"
  38. n=n+1; x[n]="luiz"
  39. n=n+1; x[n]="lula"
  40. n=n+1; x[n]="peter"
  41. n=n+1; x[n]="raquel"
  42. n=n+1; x[n]="camilo"
  43. n=n+1; x[n]="andre"
  44. n=n+1; x[n]="marcelo"
  45. n=n+1; x[n]="sedrez"
  46. n=n+1; x[n]="z"
  47. -- quicksort(1,n-1)
  48. print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
  49. sort (x, n-1)
  50. print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
  51. end