comparison CbC-examples/quicksort/quicksort_test.cbc @ 23:775dfe898662

add quicksort version 2.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Wed, 14 Oct 2009 12:12:51 +0900
parents 0eb6cac880f0
children 2476ed92181e
comparison
equal deleted inserted replaced
22:0eb6cac880f0 23:775dfe898662
2 #include<stdlib.h> 2 #include<stdlib.h>
3 #include<assert.h> 3 #include<assert.h>
4 #include<unistd.h> 4 #include<unistd.h>
5 5
6 #include"quicksort_test.h" 6 #include"quicksort_test.h"
7
8 extern __code quicksort(int *,int,int, __code(*)(void*), void*);
9
7 10
8 void 11 void
9 random_initialize(int *v, int size, int min, int max) 12 random_initialize(int *v, int size, int min, int max)
10 { 13 {
11 int i; 14 int i;
27 } 30 }
28 printf(" ]\n"); 31 printf(" ]\n");
29 } 32 }
30 33
31 void 34 void
32 starter() 35 starter(int size)
33 { 36 {
34 int *target; 37 int *target;
35 int size=100;
36 38
37 target = (int*)malloc(sizeof(int)*size); 39 target = (int*)malloc(sizeof(int)*size);
38 if (!target) { 40 if (!target) {
39 perror("malloc"); 41 perror("malloc");
40 exit(1); 42 exit(1);
41 } 43 }
42 44
43 random_initialize(target, size, 0, 90); 45 random_initialize(target, size, 0, 90);
44 46
45 print_array(target, size); 47 //print_array(target, size);
46 goto quicksort(target, 0, size-1, exit0, (void*)target); 48 goto quicksort(target, 0, size-1, exit0, (void*)target);
47 49
48 printf("bad region\n"); 50 printf("bad region\n");
49 } 51 }
50 52
51 int 53 int
52 main(int argc, char **argv) 54 main(int argc, char **argv)
53 { 55 {
54 unsigned int seed=0; 56 unsigned int seed=0;
57 int size=100;
55 int opt; 58 int opt;
56 59
57 while ((opt = getopt(argc, argv, "s:")) != -1) { 60 while ((opt = getopt(argc, argv, "s:n:")) != -1) {
58 switch (opt) { 61 switch (opt) {
59 case 's': 62 case 's':
60 seed = atoi(optarg); 63 seed = atoi(optarg);
64 break;
65 case 'n':
66 size = atoi(optarg);
61 break; 67 break;
62 default: 68 default:
63 fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]); 69 fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]);
64 exit(1); 70 exit(1);
65 } 71 }
66 } 72 }
67 73
68 srandom(seed); 74 srandom(seed);
69 starter(); 75 starter(size);
70 return 0; 76 return 0;
71 } 77 }
72 78
73 static int 79 static int
74 check_sort(int *v, int size) 80 check_sort(int *v, int size)
84 __code 90 __code
85 exit0(void *arg) 91 exit0(void *arg)
86 { 92 {
87 int *v = arg; 93 int *v = arg;
88 int b; 94 int b;
89 print_array(arg, 100); 95 //print_array(arg, 100);
90 b = check_sort(arg, 100); 96 //b = check_sort(arg, 100);
91 if (b) { 97 if (b) {
92 printf("sorting successful!\n"); 98 printf("sorting successful!\n");
93 exit(-1); 99 exit(-1);
94 } else { 100 } else {
95 printf("sorting failure! \n"); 101 printf("sorting failure! \n");