Mercurial > hg > Papers > 2010 > kent-master
comparison paper/quicksort_for_ppc/quicksort_test.cbc @ 10:3d9addf62d0b
organized repository.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 16 Feb 2010 14:35:36 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
9:ae0a3666f7f9 | 10:3d9addf62d0b |
---|---|
1 #include<stdio.h> | |
2 #include<stdlib.h> | |
3 #include<assert.h> | |
4 #include<unistd.h> | |
5 | |
6 #include"quicksort_test.h" | |
7 | |
8 #define STACK_SIZE 10240 | |
9 | |
10 extern void quicksort_IF(); | |
11 | |
12 | |
13 void | |
14 random_initialize(int *v, int size, int min, int max) | |
15 { | |
16 int i; | |
17 int diff = max-min+1; | |
18 | |
19 for (i=0; i<size; i++) { | |
20 v[i] = min+random()%diff; | |
21 } | |
22 return; | |
23 } | |
24 | |
25 static void | |
26 print_array(int *v, int size) | |
27 { | |
28 int i; | |
29 printf("["); | |
30 for (i=0; i<size; i++) { | |
31 printf("%s%4d", (i%10==0)? "\n ":" ", v[i]); | |
32 } | |
33 printf(" ]\n"); | |
34 } | |
35 | |
36 int *IFv; | |
37 int IFs; | |
38 int IFe; | |
39 void* IFret; | |
40 void *IFarg; | |
41 void* IFsp; | |
42 int IFsize; | |
43 | |
44 void | |
45 starter(int size) | |
46 { | |
47 int *target; | |
48 void *sp; | |
49 | |
50 target = (int*)malloc(sizeof(int)*size); | |
51 if (!target) { | |
52 perror("malloc"); | |
53 exit(1); | |
54 } | |
55 | |
56 random_initialize(target, size, 0, 90); | |
57 | |
58 sp = malloc(STACK_SIZE); | |
59 if (!sp) { | |
60 perror("malloc"); | |
61 exit(1); | |
62 } | |
63 //print_array(target, size); | |
64 //goto quicksort(target, 0, size-1, exit0, (void*)target); | |
65 IFv= target; | |
66 IFs= 0; | |
67 IFe= size-1; | |
68 IFret= exit0; | |
69 IFarg=(void*)target; | |
70 IFsp= sp; | |
71 IFsize= STACK_SIZE; | |
72 quicksort_IF(); | |
73 | |
74 printf("bad region\n"); | |
75 } | |
76 | |
77 static int size=100; | |
78 | |
79 int | |
80 main(int argc, char **argv) | |
81 { | |
82 unsigned int seed=0; | |
83 int opt; | |
84 | |
85 while ((opt = getopt(argc, argv, "s:n:")) != -1) { | |
86 switch (opt) { | |
87 case 's': | |
88 seed = atoi(optarg); | |
89 break; | |
90 case 'n': | |
91 size = atoi(optarg); | |
92 break; | |
93 default: | |
94 fprintf(stderr, "Usage: %s [-t times] [-n sizeofarray] [-s seed]\n", argv[0]); | |
95 exit(1); | |
96 } | |
97 } | |
98 | |
99 srandom(seed); | |
100 starter(size); | |
101 return 0; | |
102 } | |
103 | |
104 static int | |
105 check_sort(int *v, int size) | |
106 { | |
107 int i; | |
108 for (i=0; i<size-1; i++) { | |
109 if (v[i] > v[i+1]) | |
110 return 0; | |
111 } | |
112 return 1; | |
113 } | |
114 | |
115 void | |
116 exit0(void *arg) | |
117 { | |
118 int b; | |
119 //print_array(arg, size); | |
120 b = check_sort(arg, size); | |
121 if (b) { | |
122 printf("sorting successful!\n"); | |
123 exit(EXIT_SUCCESS); | |
124 } else { | |
125 printf("sorting failure! \n"); | |
126 exit(EXIT_FAILURE); | |
127 } | |
128 } | |
129 |