Mercurial > hg > CbC > CbC_gcc
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"); |