上一篇我们分析了冒泡排序
图解C语言冒泡排序算法,含代码分析
今天来分析一下选择排序
选择排序算法的原理
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
代码实现
代码语言:c复制//
// @author: 冲哥
// @date: 2021/12/24 14:43
// @description:实现选择排序
// 微信关注公众号【C语言中文社区】,免费领取300G精品编程资料
#include <stdio.h>
#define N 5 //数组中元素的个数
void print_arr(int *); //将数组打印输出
void select_sort(int *); //选择排序
int main(){
int arr[N] = {23,12,33,20,45}; //定义数组并初始化
printf("排序前的数据为:n");
print_arr(arr);
printf("开始排序:n");
select_sort(arr);
printf("排序后的数据为:n");
print_arr(arr);
}
void print_arr(int arr[]){
//将数组循环遍历输出
for (int i = 0; i < N; i ) {
printf("%dt", arr[i]);
}
printf("n");
}
void select_sort(int arr[]){
int temp; //中间变量
for (int i = 0; i < N-1; i ) { //外层循环
for (int j = i 1; j < N; j ) { //内层循环
if (arr[i] > arr[j]){ //外循环里的元素和内循环里的每一个元素比较
//交换位置
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
print_arr(arr);
}
printf("n");
}
运行结果
代码语言:txt复制排序前的数据为:
23 12 33 20 45
开始排序:
12 23 33 20 45
12 20 33 23 45
12 20 23 33 45
12 20 23 33 45
排序后的数据为:
12 20 23 33 45
从运行结果可以看出:
第一次扫描将23和12的位置互换
第二次扫描将23和20的位置互换
第三次扫描将23和33的位置互换
第四次扫描排序完成
为了更清楚地了解排序过程,请参照以下动图图解
动图图解选择排序
如果您觉得本篇文章对您有帮助,请转发给更多的人