选择排序与冒泡排序

1.选择排序:

       工作原理:

       首先在未排序的序列中找到最小值,存放在排序序列起始位置,再从剩下的未排序序列中找最小值,排列在已排序序列的末尾,直至所有元素排序完毕。

       算法描述:

       起始状态:有序区间为0;无序区间为[1,n];

       第i次排序:有序区间为[1,i],无序区间为[i,n];无序区间中的第i个最小值,放在有序区间的最后一位;有序区间加1;无序区间减1;n-1次排序后,数据有序,排列完毕。

实验步骤:

       1.定义变量,用一个for循环输入需要排序的12个数;

       2.再用两个for循环将两个数比大小,如果前一个数比后一个数大,则利用中间变量t将其调换位置;

       3.最后再用一个for循环将排序后的数列输出。

注意事项:

       *定义数组时,数组里面的值需比所需排列的数的值大;

       *输入时需要用取地址符&,输出时不需要用取地址符&;

       *n个数据需要排列n-1次。 

2.冒泡排序:

       工作原理:

       重复走访需要排序的数列,一次比较两个数,如果它们的大小顺序错误,则调换顺序,使数据从小到大依次排列,直到没有需要调换的数据为止,则数据已排列完成。

       算法描述:

       比较相邻的元素,如果第一个比第二个数大,则交换两者的位置;在一趟比较中,对相邻的元素重复以上操作,则第一位为最小值,最后一位为最大值;接下来在每一趟中重复以上操作,直到排序完成。

实验步骤:

  1. 定义变量,n代表比较的趟数,m代表每趟两两比较的次数;
  2. 用一个for循环输入10个数,接着再用2个for循环,中间变量t进行两两比较,最后再用一个for循环将排序后的序列输出;
  3. 排序完成。

注意事项:

      *定义变量为整型;

      *明白变量n,m的意义;

      *正确运用for循环进行输入,输出,比较等;

 #include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,m,t,a[13];   //定义变量,数组为整形;
    for(n=1;n<=12;n++)
        scanf("%d",&a[n]);  //输入12个数据;
    for(n=1;n<=11;n++)
        for(m=n+1;m<=12;m++)
            if(a[n]>a[m])   //如果前一个数比后一个数大,利用中间变量将两数调换位置;
            {
                t=a[n];
                a[n]=a[m];
                a[m]=t;
            }
     for(n=1;n<=12;n++)
        printf("%5d",a[n]);   //输出排列好的12个数据;
     printf("\n");
    return 0;
}


#include <stdio.h>
int main()
{
    int n,m,t,a[11];     //定义变量及数组为基本整型;
    printf("请输入10个数:\n");
    for(n=1;n<11;n++)
        scanf("%d",&a[n]);     //从键盘中输入10个数;
    for(n=1;n<10;n++)    //变量n代表比较的趟数;
        for(m=1;m<11-n;m++)     //变最m代表每趟两两比较的次数;
            if(a[m]>a[m+1])
            {
                t=a[m];      //产利用中间变童实现两值互换;
                a[m]=a[m+1];
                a[m+1]=t;
            }
            printf("排序后的顺序是:\n");
            for(n=1;n<=10;n++)
                printf("%5d",a[n]);    //将冒泡排序后的顺序输出;
        printf("\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值