动图图解C语言选择排序算法,含代码分析

2022-04-13 09:45:39 浏览数 (1)

上一篇我们分析了冒泡排序

图解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的位置互换

第四次扫描排序完成

为了更清楚地了解排序过程,请参照以下动图图解

动图图解选择排序

selectselect

如果您觉得本篇文章对您有帮助,请转发给更多的人

0 人点赞