Sorting algorithms/Gnome sort: Difference between revisions
Content added Content deleted
m (Rust - replace Ord by PartialOrd) |
(Added Swift solution) |
||
Line 2,782: | Line 2,782: | ||
1 to: 10 do: [ :i | (o at: i) displayNl ].</lang> |
1 to: 10 do: [ :i | (o at: i) displayNl ].</lang> |
||
=={{header|Swift}}== |
|||
<lang swift>func gnomeSort<T: Comparable>(_ a: inout [T]) { |
|||
var i = 1 |
|||
var j = 2 |
|||
while i < a.count { |
|||
if a[i - 1] <= a[i] { |
|||
i = j |
|||
j += 1 |
|||
} else { |
|||
a.swapAt(i - 1, i) |
|||
i -= 1 |
|||
if i == 0 { |
|||
i = j |
|||
j += 1 |
|||
} |
|||
} |
|||
} |
|||
} |
|||
var array = [10, 8, 4, 3, 1, 9, 0, 2, 7, 5, 6] |
|||
print("before: \(array)") |
|||
gnomeSort(&array) |
|||
print(" after: \(array)")</lang> |
|||
{{out}} |
|||
<pre> |
|||
before: [10, 8, 4, 3, 1, 9, 0, 2, 7, 5, 6] |
|||
after: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
|||
</pre> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |