# HG changeset patch # User Nobuyasu Oshiro # Date 1343683637 -32400 # Node ID f426762609d41091e74996f28e3409757f7f934b # Parent 2ec14e6d83034e81d2fa676beb2dc46404396f3c add test-quicksort diff -r 2ec14e6d8303 -r f426762609d4 Huffman/test-huffman.c --- a/Huffman/test-huffman.c Tue Jul 31 04:55:48 2012 +0900 +++ b/Huffman/test-huffman.c Tue Jul 31 06:27:17 2012 +0900 @@ -1,16 +1,80 @@ #include #include +#define N 256 +#define READ_BUF_SIZE 1024 +#define INPUT(fp, buf, result, max_size) result = fread(buf, 1, max_size, fp) +int parent[2*N]; +int l_node[2*N], r_node[2*N]; + +void q_sort(int* numbers[], int left, int right) +{ + int pivot, l_hold, r_hold; + int *bp; + l_hold = left; + r_hold = right; + pivot = *numbers[left]; + bp = numbers[left]; + while (left < right) + { + while ((*numbers[right] >= pivot) && (left < right)) + right--; + if (left != right) + { + numbers[left] = numbers[right]; + left++; + } + while ((*numbers[left] <= pivot) && (left < right)) + left++; + if (left != right) + { + numbers[right] = numbers[left]; + right--; + } + } + numbers[left] = bp; + pivot = left; + left = l_hold; + right = r_hold; + if (left < pivot) + q_sort(numbers, left, pivot-1); + if (right > pivot) + q_sort(numbers, pivot+1, right); +} +void quick_sort(int* numbers[], int array_size) +{ + q_sort(numbers, 0, array_size - 1); +} + + +int encode(char *buf, size_t n_chars) +{ + int alp[N]; + + int i; + for (i=0; i +void q_sort(int* numbers[], int left, int right) +{ + int pivot, l_hold, r_hold; + int *bp; + l_hold = left; + r_hold = right; + pivot = *numbers[left]; + bp = numbers[left]; + while (left < right) + { + while ((*numbers[right] >= pivot) && (left < right)) + right--; + if (left != right) + { + numbers[left] = numbers[right]; + left++; + } + while ((*numbers[left] <= pivot) && (left < right)) + left++; + if (left != right) + { + numbers[right] = numbers[left]; + right--; + } + } + numbers[left] = bp; + pivot = left; + left = l_hold; + right = r_hold; + if (left < pivot) + q_sort(numbers, left, pivot-1); + if (right > pivot) + q_sort(numbers, pivot+1, right); +} +void quick_sort(int* numbers[], int array_size) +{ + q_sort(numbers, 0, array_size - 1); +} + + + +int main() +{ + int n = 6; + int buf[] = {33, 23, 11, 44, 51, 98}; + int *numbers[n]; + + int i; + + for (i=0; i