File: sort.hpc

package info (click to toggle)
hp48cc 1.3-7
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 380 kB
  • sloc: yacc: 452; ansic: 184; lex: 108; makefile: 90; sh: 90
file content (36 lines) | stat: -rw-r--r-- 718 bytes parent folder | download | duplicates (6)
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
// sort.hpc -- Sorting algorithms -*- C -*-

// Operates on lists only; for example, try:
// 	ssort(@{3, 9, 1, 5, 8, 2});

// Simple sort
declare ssort(l) : n(0), x(1), y(0), kx(0), ky(0) {
	n = SIZE(l);
	for (x = 1; x < n; ++x)
		for (y = x + 1; y <= n; ++y) {
			kx = GET(l, x);
			ky = GET(l, y);
			if (ky < kx)	// Swap values
				l = PUT(PUT(l, x, ky), y, kx);
		}
	l;	// Return value
}

// Simple sort 2
declare ssort2(l) : n(0), x(1), y(0), m(0), k(0), kx(0), ky(0) {
	n = SIZE(l);
	for (x = 1; x < n; ++x) {
		m = GET(l, x);
		k = x;
		for (y = x + 1; y <= n; ++y) {
			ky = GET(l, y);
			if (ky < m) {
				m = ky;
				k = y;
			}
		}
		kx = GET(l, x);
		l = PUT(PUT(l, x, m), k, kx);
	}
	l;	// Return value
}