10.27作业(气泡法和选择法)

本文详细介绍了两种排序算法——气泡法和选择法,它们都通过比较实现数据排序。相同点包括每轮循环后都有固定不动的数据,以及初始循环次数的计算方式。不同点在于气泡法只比较相邻项,而选择法则涉及所有剩余项。
摘要由CSDN通过智能技术生成

(1)气泡法(用于将一组数据按照从大到小或者从小到大的顺序进行排序)

例题

从键盘上输入10个整数,用起泡法进行从小到大排序。

输入:9 8 7 6 5 4 3 2 1 0 输出:    0    1    2    3    4    5    6    7    8    9

#include<stdio.h>
#define N 10
int main()
{
    int a[N],i,j,t;
    for(i=0;i<N;i++)         scanf("%d",&a[i]);//输入N个数
    for(i=0;i<N-1;i++)//进行N-1趟循环
    {
        for(j=0;j<N-1-i;j++)//在每次循环中进行N-1-i趟比较
        {
            if(a[j]>a[j+1])//相邻的两项进行比较
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
}
}

就是将相邻的两项进行比较,然后交换位置,当在进行完一正趟比较过后,就会有一个数到达指定位置,所以这个数在接下来的比较当中就不会再出现

(2)选择法(用于将一组数据按照从大到小或者从小到大的顺序进行排序)

例题

从键盘上输入10个整数,用选择法进行从大到小排序。

输入:9 8 6 7 5 4 3 2 1 0  输出:    9    8    7    6    5    4    3    2    1    0

#include<stdio.h>
int main()
{
int n,i,j,a[10],t;
for(i=0;i<=9;i++) scanf("%d ",&a[i]);
for(i=0;i<=8;i++)//因为算出九个数,第十个数就不用算了,所以就算十个数
{
for(j=i+1;j<=9;j++)//因为要从比它大一个的数开始算起,所以要加1,又因为是和除了这个数外的所有数进行比较,所以要比完
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i<=9;i++) printf("%5d",a[i]);
}

选择法就是将每一个数先单个拎出来,然后用其他的数代替它原来的数,代替完一个数之后这个数就不动了,所以之后进行的比较会越来越少

总结:气泡法和选择法的异同点:

相同点:(1)每一次循环过后都会有一个数据不在变动

              (2)第一个循环的个数都是总的数据数减去1,第二个循环都是总的数据减去第一个循环中i的值再减去1

不同点:(1)气泡法只能是相邻两个数进行比较,而选择法则是将一个数据与全部剩余数据进行比较

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值