source: Deliverables/D2.2/8051/tests/tmp_tests/Backend/quicksort.c @ 1525

Last change on this file since 1525 was 1525, checked in by ayache, 9 years ago

D2.2: function pointers using JMP.

File size: 943 bytes
Line 
1
2#define SIZE 5
3
4void swap (signed char a[], signed char i, signed char j) {
5  signed char t;
6  t = a[i] ; a[i] = a[j] ; a[j] = t;
7}
8
9signed char partition (signed char a[], signed char l, signed char r) {
10   signed char pivot, i, j;
11   pivot = a[l];
12   i = l; j = r+1;
13               
14   while (1) {
15     while (i <= r && a[i] <= pivot) ++i;
16     do --j; while (a[j] > pivot);
17     if (i >= j) break;
18     swap(a, i, j);
19   }
20   swap(a, l, j);
21   return j;
22}
23
24void quicksort (signed char a[], signed char l, signed char r) {
25   signed char j;
26
27   if (l < r) {
28     j = partition(a, l, r);
29     quicksort(a, l, j-1);
30     quicksort(a, j+1, r);
31   }
32}
33
34void print_tab (signed char tab[], signed char size) {
35  signed char i;
36
37  for (i = 0 ; i < size ; i++) {
38    print_schar(tab[i]);
39    space();
40  }
41  newline();
42}
43
44signed char main () {
45  signed char tab[SIZE] = {26, -21, 43, -62, 8};
46
47  quicksort(tab, 0, SIZE-1);
48  print_tab(tab, SIZE);
49
50  return 0;
51}
Note: See TracBrowser for help on using the repository browser.