d_array_test.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:1k
开发平台:

MultiPlatform

  1. #include <LEDA/_d_array.h>
  2. #include <LEDA/list.h>
  3. #include <LEDA/impl/avl_tree.h>
  4. #include <LEDA/impl/rb_tree.h>
  5. #include <LEDA/impl/skiplist.h>
  6. #include <LEDA/impl/ch_hash.h>
  7. void d_array_test(d_array<int,int>& count, list<int>& L, char* name)
  8.   int min;
  9.   int max;
  10.   int x;
  11.   cout << string("%-10s",name);
  12.   cout.flush();
  13.   float T = used_time();
  14.   forall(x,L) count[x]++;
  15.   min = max = L.head();
  16.   forall(x,L)
  17.   { if (count[x] > count[max]) max = x;
  18.     if (count[x] < count[min]) min = x;
  19.    }
  20.   cout << "min: " << min << " appears " << count[min] << " times, ";
  21.   cout << "max: " << max << " appears " << count[max] << " times. ";
  22.   cout << string("   (%8.2f sec)",used_time(T));
  23.   newline;
  24. }
  25. main()
  26. {
  27.    d_array<int,int>           RS_ARRAY(0);
  28.   _d_array<int,int,avl_tree>  AVL_ARRAY(0);
  29.   _d_array<int,int,rb_tree>   RB_ARRAY(0);
  30.   _d_array<int,int,ch_hash>   CH_ARRAY(0);
  31.   _d_array<int,int,skiplist>  SK_ARRAY(0);
  32.   int N = read_int("# keys = ");
  33.   list<int> L;
  34.   while(N--) L.append(rand_int(1,100));
  35.   d_array_test(AVL_ARRAY,L,"avl_tree");
  36.   d_array_test(RS_ARRAY,L,"rs_tree");
  37.   d_array_test(RB_ARRAY,L,"rb_tree");
  38.   d_array_test(CH_ARRAY,L,"ch_hash");
  39.   d_array_test(SK_ARRAY,L,"skiplist");
  40.  
  41.   return 0;
  42. }