冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。两者的实现源码为:

       冒泡排序:

template <class Item>

void BubbleSort(Item* data,int len)

{

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

              for (int j = len - 1; j > i; --j)

              {

                     if (data[j] > data[j - 1])

                     {

                            Exch2Item(data[j],data[j - 1]);

                     }

              }

}

选择排序:

template <class Item>

void SelectSort(Item* data,int len)

{

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

       {

              int min = i;

              //找到当前未排序最小的元素

              for (int j = i + 1; j < len; ++j)

              {

                     if (data[j] < data[min])

                            min ++;

              }

 

              Exch2Item(data[i],data[min]);

       }

}

测试程序为:

int main(int argc,char* argv[])

{

       int* data = InitData<int>(10,100);

 

       PrintData<int>(data,10,"before BubbleSort");

 

      

       // BubbleSort(data,10);

       SelectSort(data,10);

             

       PrintData<int>(data,10,"after BubbleSort");

       return 0;

}

需要说明和注意的是:InitData PrintData定义和实现在排序与查找——备用函数给出的,请参考上一篇文章。

Posted on 2005-07-17 10:50  k_eckel's mindview  阅读(1333)  评论(1)    收藏  举报