Sorting algorithms/Bubble sort: Difference between revisions

m
removed my batch example as it has subtle (but severe) issues...
m (removed my batch example as it has subtle (but severe) issues...)
Line 534:
-31 0 1 2 2 4 65 83 99 782
</pre>
 
=={{header|Batch File}}==
<lang windowsnt>
@echo off & setlocal enabledelayedexpansion
 
:: Bubble Sort for batch/cmd Michael Sanders - 2017
::
:: usage: bsort.cmd cb321a
:: output: 123abc
::
:: to sort ascending [a-z]: set seq=gtr
:: to sort descending [z-a]: set seq=lss
::
:: note: shell meta characters like ! ^ < > |
:: (& others) will be need to be escaped...
::
:: collating order...
::
:: 32 SPC 51 3 70 F 89 Y 108 l
:: 33 ! 52 4 71 G 90 Z 109 m
:: 34 " 53 5 72 H 91 [ 110 n
:: 35 # 54 6 73 I 92 \ 111 o
:: 36 $ 55 7 74 J 93 ] 112 p
:: 37 % 56 8 75 K 94 ^ 113 q
:: 38 & 57 9 76 L 95 _ 114 r
:: 39 ' 58 : 77 M 96 ` 115 s
:: 40 ( 59 ; 78 N 97 a 116 t
:: 41 ) 60 < 79 O 98 b 117 u
:: 42 * 61 = 80 P 99 c 118 v
:: 43 + 62 > 81 Q 100 d 119 w
:: 44 , 63 ? 82 R 101 e 120 x
:: 45 - 64 @ 83 S 102 f 121 y
:: 46 . 65 A 84 T 103 g 122 z
:: 47 / 66 B 85 U 104 h 123 {
:: 48 0 67 C 86 V 105 i 124 |
:: 49 1 68 D 87 W 106 j 125 }
:: 50 2 69 E 88 X 107 k 126 ~
 
:setup
 
set seq=gtr
set str=%*
set buf=%*
set len=0
 
:getlength
 
if not defined buf goto :chklength
set buf=%buf:~1%
set /a len+=1
goto :getlength
 
:chklength
 
if %len% leq 0 (echo bubble sort: zero length string & exit /b 1)
set /a len-=1
 
:bubblesort
 
set /a c=0
for /l %%x in (0,1,%len%) do (
set /a y=%%x+1
call set a=!str:~%%x,1!
call set b=%%str:~!y!,1%%
if defined b if !a! %seq% !b! (
call set str=%%str:!a!!b!=!b!!a!%%
set /a c=1
)
)
if %c% equ 1 goto :bubblesort
 
:done
 
echo unsorted input: %*
echo sorted output: %str%
endlocal & exit /b 0
</lang>
 
=={{header|C}}==
Anonymous user