#关于选择排序与冒泡排序算法详解

本文详细介绍了两种基础排序算法——选择排序和冒泡排序的原理与实现。通过C语言代码示例,帮助初学者理解如何在数组中寻找最小或最大元素,并进行正确排序。适合编程新手学习。

关于选择排序与冒泡排序算法详解

本篇主要应C语言初学者对冒泡排序和选择排序的一个初步介绍和认知

首先我们来认识下选择排序

那什么是选择排序呢?选择排序就是指在一推数组里每一次从待排序的数据元素中选出最小(或最大)的一个元素,放在数组最末的位置(最前面的位置也可以)。以此循环下去,直到全部数据排完。
那我们先来看一下代码
*此处的n为长度,自己掌控

#include <stdio.h>
int main()
{
    int i,j,t,a[11];    //定义变量及数组为基本整型
    printf("请输入n个数:\n");
    for(i=1;i<n;i++)
        {scanf("%d",&a[i]);    //从键盘中输入要排序的n个数字
        printf("%3d",a[i]);       //先输出排序前的数组顺序
        }
    for(i=1;i<=n-1;i++)
        for (j=i+1;j<=n;j++)
            if(a[i]>a[j])    //通过i和j的比较大小,如果前大,则交换位置
            {
                t=a[i];     //常用的交换三连
                a[i]=a[j];
                a[j]=t;
            }
    for(i=1;i<=n;i++) // 通过循环输出排序后的数组
        printf("%3d", a[i]); 
    printf("\n");
    return 0;
}

这就是选择排序的代码了,具体原理作者如下解释
第一次交换
在这里插入图片描述
第二次交换在第一次交换的基础上进行
在这里插入图片描述
第三次交换
在这里插入图片描述
经过六轮查找后 最大数一直往后靠 结果为:
在这里插入图片描述
以上就是选择排序的基本过程了,当然,你也可以比较最小的放在第一位,以此类推,反复练习即可熟练

接下来认识下冒泡排序

所谓的冒泡排序也叫升序排序法,但是相比起二分查找只能应用于有序数列。
相邻的两两个数比较 ,若前者大后者小,则交换。
下面看一下代码
*n为长度自己定义即可
``

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

*当然大家可以试一下在函数里写这些排序
下期更新二分查找和插入排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值