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 }