comparison quicksort/quicksort_test.cbc @ 2:50e23a4b2f40

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