waiting...'s Blog
选择排序
-
#include <iostream>
-
#include <cstdlib>
-
#include <ctime>
-
using namespace std;
-
-
// 设置随机整数的种子
-
void rand_seed()
-
{
-
unsigned int seed = static_cast<unsigned int>(time(0));
-
srand(seed);
-
}
-
-
// 返回一个介于lower与upper之间的一个随机整数
-
int randInt(int lower, int upper)
-
{
-
return lower + rand() % (upper - lower + 1);
-
}
-
-
// 交换两个数的值
-
void swap(int &a, int &b)
-
{
-
int temp = a;
-
a = b;
-
b = temp;
-
}
-
-
void print(const int a[], int length)
-
{
-
for (int i = 0; i < length; i++)
-
cout << a[i] << " ";
-
cout << endl;
-
}
-
-
// 函数_选择排序_升序排列
-
void selection_sort(int a[], int length)
-
{
-
int i, j, temp_index;
-
for (i = 0; i < length - 1; ++i)
-
{
-
temp_index = i; // 存储未排序区中最大值的索引
-
for (j = i + 1; j < length; ++j)
-
if (a[j] < a[temp_index]) // 大于号:降序排列, 小于号:升序排列
-
temp_index = j;
-
// 交换已排序区的最后一个数字 和 未排序区的最大的数字
-
swap(a[temp_index], a[i]);
-
}
-
}
-
-
int main()
-
{
-
const int length = 20; // 数组长度
-
const int lower = 1; // 随机数上限
-
const int upper = 1000; // 随机数下限
-
int a[length];
-
-
// 初始化随机数种子
-
rand_seed();
-
-
// 初始化数组
-
for (int i = 0; i < length; i++)
-
a[i] = randInt(lower, upper);
-
-
// 输出数组
-
cout << "升序排列前的数组:" << endl;
-
print(a, length);
-
-
// 选择排序
-
selection_sort(a, length);
-
-
// 输出数组
-
cout << "升序排列后的数组:" << endl;
-
print(a, length);
-
-
return 0;
-
}
运行结果: