03-26-2023, 03:48 PM
(03-24-2023, 08:24 AM)david_uwi Wrote: For small data sets (<5000) I always use select sort.
It is easy to code.
It always works.
It always takes the same amount of time.
For larger data set some there are much better routines, but I don't understand how they work - some kind of splitting and pivoting -magic in other words.
Code: (Select All)DefInt A-S
kdim = 32767
Dim x(kdim)
For i = 1 To kdim
x(i) = Rnd * 1000
Print x(i),
Next i
tt = Timer
For j = 1 To kdim \ 2
jmax = j: xmax = x(j)
jmin = kdim - j + 1: xmin = x(kdim - j + 1)
For i = j + 1 To kdim - j + 1
If x(i) > xmax Then jmax = i: xmax = x(i)
If x(i) < xmin Then jmin = i: xmin = x(i)
Next i
Swap x(j), x(jmax)
Swap x(kdim - j + 1), x(jmin)
Next j
Print Timer - tt
Input sa$
For i = 1 To kdim
Print x(i),
Next i
Hi David
thanks to remember me the select sort method.
I think to make a thread about it, and I'll post the link to this your message here in bubble sort land.
Based on my memory this your code shows an optmized algorithm of select sort because I remember a code that runs across the whole array and not only to the first half array.
Here the results after running your code
As I can observe it performs a discendent/decreasing ordering of the array.
Moreover value are type Single! But it is better so because forcing to be Integer% we get so many duplicates!