File: combsort

package info (click to toggle)
brandy 1.23.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,268 kB
  • sloc: ansic: 39,421; makefile: 91; sh: 1
file content (90 lines) | stat: -rw-r--r-- 1,252 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
REM This program compares a comb sort to a bubble sort
:
size%=2000
DIM table%(size%)
PROCsetup4
PROCbubblesort
PROCsetup4
PROCcombsort
END
:
:
DEF PROCsetup1
PRINT"Ascending order ";
FOR I%=1 TO size%
table%(I%)=I%
NEXT
ENDPROC
:
:
DEF PROCsetup2
PRINT"Descending order ";
FOR I%=1 TO size%
table%(I%)=size%-I%
NEXT
ENDPROC
:
:
DEF PROCsetup3
PRINT"Random order ";
I%=RND(-65656)
FOR I%=1 TO size%
table%(I%)=RND(100000)
NEXT
ENDPROC
:
:
DEF PROCsetup4
PRINT"Semi-ordered ";
I%=RND(-18940606)
N%=1
WHILE N%<=size%
L%=RND(20)+1
IF N%+L%>size% THEN L%=size%-N%
X%=RND(100000)
FOR I%=1 TO L%
table%(N%)=X%
X%+=RND(100)
N%+=1
NEXT
ENDWHILE
ENDPROC
:
:
DEF PROCcheck
FOR N%=1 TO size%-1
  IF table%(N%)>table%(N%+1) THEN PRINT"Out of order at ";N%
NEXT
ENDPROC
::
DEF PROCcombsort
PRINT"Comb sort ";
T=TIME
gap%=size%
REPEAT
gap%=gap%/1.3: IF gap%<1 THEN gap%=1
switch%=FALSE
FOR I%=1 TO size%-gap%
J%=I%+gap%
IF table%(I%)>table%(J%) THEN SWAP table%(I%),table%(J%): switch%=TRUE
NEXT
UNTIL NOT switch% AND gap%=1
PRINT TIME-T
PROCcheck
ENDPROC
:
:
DEF PROCbubblesort
PRINT"Bubble sort ";
T=TIME
H%=size%-1
REPEAT
M%=0
FOR I%=1 TO H%
IF table%(I%)>table%(I%+1) THEN SWAP table%(I%),table%(I%+1): M%=I%
NEXT
H%=M%
UNTIL M%=0
PRINT TIME-T
PROCcheck
ENDPROC