每周一算法之五——选择排序
2011-12-14 23:09 贼寇在何方 阅读(274) 评论(0) 编辑 收藏 举报选择排序,也是我最早学会的排序方法,原理相当简单:每次循环把最小的挑出来放到最前面
从前,一般在写代码的时候,没有现成的排序函数可用时,就用它了
选择排序时间复杂度O(n2),一般也就比冒泡快一点
// 选择排序
// C++ 实现
#include <iostream>
using namespace std;
template<class T>
void selection_sort(T array[], const int size)
{
int min;
T temp;
for(int i=0; i < size - 1; i++)
{
min = i;
for(int j = i + 1; j < size; j++)
{
if(array[j] < array[min])
{
min = j;
}
}
if(min != i)
{
temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
}
int main(void)
{
int array[] = {2, 5, 9, 3, 12, 1, 6, 11, 4, 7, 13, 8, 10};
selection_sort(array, sizeof(array) / sizeof(int));
for (int i = 0; i < sizeof(array) / sizeof(int); i ++)
cout<<array[i]<<endl;
return 0;
}