gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
expanded sample size, first version
[mjc2wsl.git] / samples / alpha-mj-exp / SortColors.mj
1 program SortColors {
2 // array with n objects colored red, white or blue
3 // sort so that the same colored objects are adjacent
4 // red, white, blue = 0, 1, 2 (values in array)
6 void sortColors(int[] nums)
7 int p0, p1, p2, temp;
8 {
9 p0 = 0;
10 p1 = 0;
11 p2 = len(nums) - 1;
13 while (p1 <= p2) {
14 if (nums[p1] == 0) {
15 temp = nums[p0];
16 nums[p0] = nums[p1];
17 nums[p1] = temp;
18 p0 = p0 + 1;
19 p1 = p1 + 1;
20 } else if (nums[p1] == 1) {
21 p1 = p1 + 1;
22 } else {
23 temp = nums[p1];
24 nums[p1] = nums[p2];
25 nums[p2] = temp;
26 p2 = p2 - 1;
27 }
28 }
29 }
31 void printArr(int[] nums)
32 int i;
33 {
34 i = 0;
35 print('\n');
36 print('[');
37 while (i < len(nums)) {
38 print(nums[i], 2);
39 i++;
40 }
41 print(']', 2);
42 }
44 void main()
45 int n, i;
46 int[] nums;
47 {
48 print('n');
49 print('?');
50 read(n);
51 nums = new int[n];
52 i = 0;
53 while (i < n) {
54 print('n');
55 print(i);
56 print('?');
57 print(' ');
58 read(nums[i]);
59 i++;
60 }
61 sortColors(nums);
62 printArr(nums);
63 }
64 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner