为了准备PAT甲级,开始复习数据结构与算法了,先从最简单的几个排序算法之一,选择排序开始。
简单选择排序的思路是下标i从0到n-1开始遍历,寻找i到n-1中的最小元素与第i个元素相交换,从而实现排序。这样的排序要二重循环,时间复杂度是n^2。
下面是代码
#include<iostream>
#include<stdlib.h>
#include<vector>
#include<time.h>
#define MAX_NUM 1000000
using namespace std;
void selection_sort(vector<int> &num)
{
for (int i = 0;i < num.size();i++)
{
int min = MAX_NUM;
for (int j = i;j < num.size();j++)
{
if (min >= num[j])
min = num[j];
}
num[i] = min;
}
}
int main(void)
{
//这里通过srand来进行随机种子的设定,需要头文件stdlib.h与time.h
//并通过rand()函数每次得到一个不一样的值,作为数组中的元素
srand((unsigned)time(NULL));
vector<int> num;
for (int i = 0;i < 10;i++)
num.push_back(rand());
selection_sort(num);
for (int i = 0;i < num.size();i++)
cout << num.at(i) << endl;
return 0;
}
结果如图