C语言选择排序

本文展示了一个使用C语言编写的简单选择排序程序。代码中包含一个主函数,用于接收用户输入的数字并进行排序。程序首先读取10个数字,然后通过选择排序算法将它们按升序排列。代码还有优化的空间,鼓励读者思考如何改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "stdio.h"

#define N 10

/*本代码还可以优化,希望大家思考下*/

int main(void)

{

    int i,j,t,a[N],min;

    printf("请输入%d个要排序的数字:/n",N);

    for(i=0;i<N;i++)

        scanf("%d",&a[i]);

/*输出用户输入的数字*/

    printf("/n");

    printf("你输入的数字是:/n");

    for(i=0;i<N;i++)

        printf("%5d",a[i]);       

        printf("/n");

    for(i=0;i<N-1;i++)    /*因为是比较N个数字,所以比较N-1趟就行了*/

    {

        min=i;                     /*注意设置一个值(可以不是最小)给min,相当于是用min记录最小的

                               我们现在假设第一个就是最小的  第一次比较默认的是第一个最小。以此类推,找到比它小的就交换*/

        for(j=i+1;j<N;j++)  /*每趟只要从i+1开始比,直到最后那个就行了*/

        if(a[min]>a[j])     /*只要有一个比我们默认设置的最小值要小我们就把他赋给min(此处不是赋具体值,而是告诉min他的位置)*/

   min=j;                      /*比较最小,后语句进入换位*/

        t=a[i];             /*第一趟只要交换min和a[i]那么就把第一小的放进了a[0]*/

        a[i]=a[min];        /*交换是在每一趟比较完以后进行,冒泡是即时交换*/

        a[min]=t;

    }/*注意,if后面只有一条语句,那就是min=j;交换的语句是for里面的语句我用缩进表示了这个关系*/

    printf("升序排序后的顺序是:/n");

    for(i=0;i<N;i++)

    printf("%5d",a[i]);           /*输出排序后的数字*/

    printf("/n");

  return 0;

}


复制代码

老规矩 ,看不懂的随时可以留言提问。或者发邮件
yeying@bcwhy.com
其他问题请去http://www.bcwhy.com/forum-37-1.html
我们会及时回复

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值