计算机的最重要的功能就是用来处理信息的,而涉及到对信息的处理,查找和排序则是其中最为重要的条目。这也难怪一代算法宗师Knuth在其7卷(拟)的巨著《The Art of Programming》中整整第三卷就是查找与排序了。

       这里尽量以较为正规的代码风格的代码将这些经典的排序和查找算法描述出来,目的无他,温故而知新。

u       几个要用到的函数

1)  随机产生测试数据的函数

函数名称

InitData

作者

k_eckel

时间

2005/07

函数功能

随机产生一个待排序的数组

入口参数

Len

产生数组的大小(长度)

MAX_BOUND

数组中最大元素的大小(默认为1000

输出

数组的首地址

//注意添加头文件:#include <ctime>

template <class Item>

       Item* InitData(int len,int MAX_BOUND = 1000)

       {

              Item* data = new Item[len];

             

              srand((unsigned)time(NULL));

             

              for (int i = 0; i < len; i++)

              {

                     data[i] = rand() % MAX_BOUND;

              }

             

              return data;

       }

2)  打印数组内容

函数名称

PrintData

作者

k_eckel

时间

2005/07

函数功能

打印数组,并可在打印前附加相关信息

 

入口参数

data

待输出数组

Len

数组的大小

strInfo

输出时显示的信息

输出

//注意添加头文件:#include <iostream>

template <class Item>

void PrintData(const Item* data,int len,const char* strInfo)

{

       std::cout<<strInfo<<"........"<<endl;

 

       for (int i = 0; i < len ; ++i)

       {

              std::cout<<data[i]<<" ";

       }

 

       std::cout<<endl;

}            return data;

3)  交换两个元素

template <class Item>

void Exch2Item(Item& item1,Item& item2)

{

       Item tmp = item1;

       item1 = item2;

       item2 = tmp;

}

以上3个函数在排序中经常要用到,这里给出,在相应的排序算法中不再重复。

Posted on 2005-07-16 17:11  k_eckel's mindview  阅读(501)  评论(0编辑  收藏  举报