Sorting algorithms/Cocktail sort with shifting bounds: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
Alpha bravo (talk | contribs) (Added AutoHotkey) |
||
Line 643: | Line 643: | ||
</lang> |
</lang> |
||
=={{header|AutoHotkey}}== |
|||
<lang AutoHotkey>cocktailShakerSort(A){ |
|||
beginIdx := 1 |
|||
endIdx := A.Count() - 1 |
|||
while (beginIdx <= endIdx) { |
|||
newBeginIdx := endIdx |
|||
newEndIdx := beginIdx |
|||
ii := beginIdx |
|||
while (ii <= endIdx) { |
|||
if (A[ii] > A[ii + 1]) { |
|||
tempVal := A[ii], A[ii] := A[ii+1], A[ii+1] := tempVal |
|||
newEndIdx := ii |
|||
} |
|||
ii++ |
|||
} |
|||
endIdx := newEndIdx - 1 |
|||
ii := endIdx |
|||
while (ii >= beginIdx) { |
|||
if (A[ii] > A[ii + 1]) { |
|||
tempVal := A[ii], A[ii] := A[ii+1], A[ii+1] := tempVal |
|||
newBeginIdx := ii |
|||
} |
|||
ii-- |
|||
} |
|||
beginIdx := newBeginIdx + 1 |
|||
} |
|||
}</lang> |
|||
Examples:<lang AutoHotkey>A := [8,6,4,3,5,2,7,1] |
|||
cocktailShakerSort(A) |
|||
for k, v in A |
|||
output .= v ", " |
|||
MsgBox % "[" Trim(output, ", ") "]" ; show output</lang> |
|||
{{out}} |
|||
<pre>[1, 2, 3, 4, 5, 6, 7, 8]</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
<lang c>#include <stdio.h> |
<lang c>#include <stdio.h> |