如果只从效率上说,选择排序与冒泡实在很难找出有意义的差别,但是其他地方就不一样了。

#include <iostream>

#include <stdlib.h>

#include <algorithm>

#include <set>

#define LEN 20

//Select sort

template<typename TData>
void sort_select(TData *array, int n)
{
     for(int i = 0; i < n; ++i)
     {
         int minPos = i;
         for(int j = i; j < n; ++j)
         {
             if (array[j] > array[minPos])
                 minPos = j;
         }
         std::swap(array[minPos], array[i]);
     }
}

int main()
{
     int array[LEN];
     for(int i = 0; i < LEN; ++i)
         array[i] = rand() % LEN;
     std::cout << "Before sort:\t";
     for(int i = 0; i < LEN; ++i)
         std::cout << array[i] << " ";
     std::cout << "\n";
     sort_select(array, LEN);
     std::cout << "After sort:\t";
     for(int i = 0; i < LEN; ++i)
         std::cout << array[i] << " ";
     std::cout << "\n";
} 

[原文在百度空间已经关闭]