前言
选择排序法:它的基本思想是把每次都遍历数组中的最小值(最大值)放在起始位置。
听说是一种比较简单的排序算法。
至于该排序的算法复杂度。
嗯,请查其他资料吧。
本次采用C语言的方式实现。
代码实现
#include <stdio.h>
// 打印数组
void print(int *buf, int size)
{
for (int i = 0; i < size; ++i)
{
printf("%d ", buf[i]);
}
printf("\n");
}
// 排序数组(从小到大)
void sort(int *buf, int size)
{
for (int i = 0; i < size - 1; ++i)
{
int index = i;
for (int j = i + 1; j < size; ++j)
{
if (buf[index] > buf[j])
{
index = j; // 找到最小值索引
}
}
int tmp = buf[i];
buf[i] = buf[index];
buf[index] = tmp;
}
}
// 主函数
int main(int argc, char **argv)
{
int buf[] = { 33, 2, 3, 3, 2, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 1 }; // 源数组
int size = sizeof(buf) / sizeof(int); // 数组大小
print(buf, size); // 打印插入排序前数组
sort(buf, size); // 执行插入排序
print(buf, size); // 打印插入排序后数组
return 0;
}
调试结果
结语
嗯。
好像是简单。
---End