export sub shell_sort(x()) // Shell sort based on insertion sort local gap, i, j, first, last, tempi, tempj last = arraysize(x(),1) gap = int(last / 10) + 1 while(TRUE) first = gap + 1 for i = first to last tempi = x(i) j = i - gap while(TRUE) tempj = x(j) if tempi >= tempj then j = j + gap break end if x(j+gap) = tempj if j <= gap then break end if j = j - gap wend x(j) = tempi next i if gap = 1 then return else gap = int(gap / 3.5) + 1 end if wend end sub if peek$("library") = "main" then clear screen ITEMS = 100 dim numeros(ITEMS) for n = 1 to ITEMS numeros(n) = ran(ITEMS + 1) next n print time$ shell_sort(numeros()) print time$ print "Press a key to see ordered numbers." inkey$ for n = 1 to ITEMS print numeros(n),", "; next n end if