系统:win10
软件工具:vs2019
编程语言:C语言
选择排序原理:第一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。(百科)
功能:选择排序对数组中的数进行排序(由小到大升序).
实现的代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void random_array(int a[], int n)// 获取随机数组
{
int i;
srand(time(NULL));
for (i = 0;i < n;i++)
a[i] = rand() % 100;
}
void select_sort(int a[], int n)// 选择排序算法: 小到大排序
{
int i, j, tmp,k;
for (i = 0;i < n;i++)
{
k = i; //借助k,指出未排序时的首位
for (j = i+1;j < n;j++)
{
if (a[k] >a[j])
{
k = j;// 发现有比首位小的数时,更新k值
}
}
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
void show_array(int a[], int n)// 打印数组数据
{
int i;
for (int i = 0;i < N;i++)
{
printf("%3d", a[i]);
}
}
void main(void)
{
int arr[N];
random_array(arr, N);// 获取随机数组
show_array(arr, N); // 打印随机数组的值
printf("\n"); // 换行
select_sort(arr, N);// 选择排序算法: 小到大排序
show_array(arr, N);// 打印排序之后的数组
printf("\n"); // 换行
system("pause");
}
运行结果: