00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <stdio.h>
00011 #include "array.h"
00012 #include "avl.h"
00013 #include "util.h"
00014
00015 #define MAX_WORD 1024
00016
00017 extern long random();
00018
00019
00020 main(argc, argv)
00021 char *argv;
00022 {
00023 array_t *words;
00024 avl_tree *table;
00025 char word[MAX_WORD], *tempi, *tempj;
00026 register int i, j;
00027 long time;
00028 #ifdef TEST
00029 avl_generator *gen;
00030 char *key;
00031 #endif
00032
00033
00034 words = array_alloc(char *, 1000);
00035 while (gets(word) != NIL(char)) {
00036 array_insert_last(char *, words, util_strsav(word));
00037 if (array_n(words) == 100000) break;
00038 }
00039
00040
00041 for(i = array_n(words)-1; i >= 1; i--) {
00042 j = random() % i;
00043 tempi = array_fetch(char *, words, i);
00044 tempj = array_fetch(char *, words, j);
00045 array_insert(char *, words, i, tempj);
00046 array_insert(char *, words, j, tempi);
00047 }
00048
00049 #ifdef TEST
00050 (void) printf("Initial data is\n");
00051 for(i = array_n(words)-1; i >= 0; i--) {
00052 (void) printf("%s\n", array_fetch(char *, words, i));
00053 }
00054 #endif
00055
00056
00057 time = util_cpu_time();
00058 table = avl_init_table(strcmp);
00059 for(i = array_n(words)-1; i >= 0; i--) {
00060 (void) avl_insert(table, array_fetch(char *, words, i), NIL(char));
00061 }
00062 (void) printf("Elapsed time for insert of %d objects was %s\n",
00063 array_n(words), util_print_time(util_cpu_time() - time));
00064
00065 #ifdef TEST
00066 (void) printf("Sorted data is\n");
00067 avl_foreach_item(table, gen, AVL_FORWARD, &key, NIL(char *)) {
00068 (void) printf("%s\n", key);
00069 }
00070 #endif
00071 return 0;
00072 }