前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动图图解C语言选择排序算法,含代码分析

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

作者头像
C语言中文社区
发布2022-05-31 09:24:21
5230
发布2022-05-31 09:24:21
举报
文章被收录于专栏:C语言中文社区C语言中文社区

选择排序算法的原理

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

代码实现

代码语言:javascript
复制
#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("%d\t", 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");
}

运行结果

代码语言:javascript
复制
排序前的数据为:
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的位置互换 第四次扫描排序完成 为了更清楚地了解排序过程,请参照以下动图图解

图解选择排序

select

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择排序算法的原理
  • 代码实现
  • 运行结果
  • 图解选择排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档