代码改变世界

每周一算法之五——选择排序

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;
}