Microsoft Small Basic

Program Listing: DFB661
' Sort Numbers 0.1
' Copyright (c) 2014 Nonki Takahashi. MIT License.
' Program ID:
' Update: 2014-06-23
' Challenge: 2014-06
While "True"
TextWindow.Write("Enter numbers like 1,2,3,4,5: ")
csv = TextWindow.Read()
SeparateCSV()
n = Array.GetItemCount(value)
SortAscending()
TextWindow.Write("Sort Ascending: ")
WriteValuesWithLink()
SortDescending()
TextWindow.Write("Sort Descending: ")
WriteValuesWithLink()
TextWindow.WriteLine("")
EndWhile
Sub SeparateCSV
value = ""
i = 0
len = Text.GetLength(csv)
p = 1
While p <= len
comma = Text.GetIndexOf(Text.GetSubTextToEnd(csv, p), ",")
i = i + 1
If comma > 0 Then ' comma found
value[i] = Text.GetSubText(csv, p, comma - 1) * 1
p = p + comma
Else ' comma not found
value[i] = Text.GetSubTextToEnd(csv, p) * 1
p = len + 1
EndIf
EndWhile
EndSub
Sub SortAscending
link = ""
link[0] = 1
For i = 2 To n
j = 0
While link[j] <> "" And value[i] > value[link[j]]
j = link[j]
EndWhile
link[i] = link[j]
link[j] = i
EndFor
EndSub
Sub SortDescending
link = ""
link[0] = 1
For i = 2 To n
j = 0
While link[j] <> "" And value[i] < value[link[j]]
j = link[j]
EndWhile
link[i] = link[j]
link[j] = i
EndFor
EndSub
Sub WriteValuesWithLink
i = 0
While 0 < link[i]
TextWindow.Write(value[link[i]])
If 0 < link[link[i]] Then
TextWindow.Write(",")
EndIf
i = link[i]
EndWhile
TextWindow.WriteLine("")
EndSub