Mercurial > hg > Members > nobuyasu > CbC
comparison Huffman/test-quicksort.c @ 18:f426762609d4 draft
add test-quicksort
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 31 Jul 2012 06:27:17 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
17:2ec14e6d8303 | 18:f426762609d4 |
---|---|
1 #include <stdio.h> | |
2 void q_sort(int* numbers[], int left, int right) | |
3 { | |
4 int pivot, l_hold, r_hold; | |
5 int *bp; | |
6 l_hold = left; | |
7 r_hold = right; | |
8 pivot = *numbers[left]; | |
9 bp = numbers[left]; | |
10 while (left < right) | |
11 { | |
12 while ((*numbers[right] >= pivot) && (left < right)) | |
13 right--; | |
14 if (left != right) | |
15 { | |
16 numbers[left] = numbers[right]; | |
17 left++; | |
18 } | |
19 while ((*numbers[left] <= pivot) && (left < right)) | |
20 left++; | |
21 if (left != right) | |
22 { | |
23 numbers[right] = numbers[left]; | |
24 right--; | |
25 } | |
26 } | |
27 numbers[left] = bp; | |
28 pivot = left; | |
29 left = l_hold; | |
30 right = r_hold; | |
31 if (left < pivot) | |
32 q_sort(numbers, left, pivot-1); | |
33 if (right > pivot) | |
34 q_sort(numbers, pivot+1, right); | |
35 } | |
36 void quick_sort(int* numbers[], int array_size) | |
37 { | |
38 q_sort(numbers, 0, array_size - 1); | |
39 } | |
40 | |
41 | |
42 | |
43 int main() | |
44 { | |
45 int n = 6; | |
46 int buf[] = {33, 23, 11, 44, 51, 98}; | |
47 int *numbers[n]; | |
48 | |
49 int i; | |
50 | |
51 for (i=0; i<n; i++) { | |
52 numbers[i] = buf+i; | |
53 } | |
54 | |
55 quick_sort(numbers, n); // N is size of "buf". It is defined in "test-huffman.c". | |
56 | |
57 for (i=0; i<n; i++ ) { | |
58 printf("%d ",*numbers[i]); | |
59 } | |
60 puts(""); | |
61 return 0; | |
62 } |