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

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

原创
作者头像
C语言中文社区
发布2022-04-13 09:45:39
6990
发布2022-04-13 09:45:39
举报
文章被收录于专栏:C语言中文社区C语言中文社区

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

图解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("%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");
}

运行结果

代码语言: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的位置互换

第四次扫描排序完成

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

动图图解选择排序

select
select

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 选择排序算法的原理
  • 代码实现
  • 运行结果
  • 动图图解选择排序
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档