用冒泡法和选择法对10个整数排序(C语言 数组)

用冒泡法和选择法对10个整数排序(C语言 数组)1 区别 nbsp nbsp nbsp nbsp nbsp nbsp 两者最大的区别在于算法本身 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 冒泡法是相邻元素两两比较 每趟将最值沉底即可确定一个数在结果的位置 确定元素位置的顺序是从后往前 其余元素可以作相对位置的调整 可以进行升序或降序排序 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 选择法是每趟选出一个最值确定其在结果序列中的位置 确定元素的位置是从前往后 而每趟最多进行一次交换 其余元素的相对位置不变 可进行降序排序或升序排序 2 冒泡法

1.区别:

        冒泡法是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可以作相对位置的调整。可以进行升序或降序排序。

        选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。

2.冒泡法:

        算法分析: 如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

        代码如下(对10个整数进行升序排序):

#include<stdio.h> int main() { int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88}; //排序 for(i=1;i<10;i++) //外循环控制排序趟数,n个数排n-1趟 { for(j=0;j<10-1;j++) //内循环每趟比较的次数,第j趟比较n-i次 { if(a[j]>a[j+1]) //相邻元素比较,逆序则交换 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("排序后的结果是:\n"); for(i=0;i<10;i++) { printf("%d ",a[i]); } printf("\n"); return 0; }

3.选择法:

        算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。

        代码如下(对10个整数进行升序排序):

#include<stdio.h> int main() { int i,j,min,t,a[10]={2,4,8,3,6,9,7,222,64,88}; printf("排序前的序列为:\n"); for(i=0;i<10;i++) //输出排序前的序列 { printf("%5d",a[i]); } printf("\n"); for(i=0;i<9;i++) { min=i; //把每次循环的第一个数作为最小值 for(j=i+1;j<10;j++) { if(a[min]>a[j]) min=j; //交换 } if(min!=i) //说明第一个数不是最小数,所以将a[i+1]~a[10]中最小值与a[i]对换 { t=a[min]; a[min]=a[i]; a[i]=t; } } printf("排序后的序列为:\n"); for(i=0;i<10;i++) //输出排序后的序列 printf("%5d",a[i]); printf("\n"); return 0; } 




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231048.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月1日 上午11:01
下一篇 2026年2月1日 上午11:22


相关推荐

  • 稳定dns服务器,国内DNS服务器推荐 选对了让你网速开挂

    稳定dns服务器,国内DNS服务器推荐 选对了让你网速开挂有个小伙伴看了一则美国服务商声称自己的DNS(1.1.1.1)是互联网最快的公共服务的新闻后,询问小编是不是真的要比国内常用的DNS或者说运营商自动分配的DNS服务要厉害很多?针对这个问题,先和大家聊一下什么是DNS吧。DNS(DomainNameSystem)简单点来说,就是用来翻译网站IP的一种工具,让大家不用在浏览器中输入每个网站的IP地址(也就是XXX.XXX.XXX.XXX),直接用…

    2025年9月29日
    5
  • touch命令

    touch命令touch 命令 Linuxtouch 命令用于修改文件或者目录的时间属性 包括存取时间和更改时间 若文件不存在 系统会建立一个新的文件 ls l 可以显示档案的时间记录语法 touch acfm d 日期时间 r 参考文件或目录 t 日期时间 help version 文件或目录 参数说明 参数说明 日期时间 参考文件或目录 日期时间

    2026年3月18日
    3
  • QT3D场景的快速绘制

    QT3D场景的快速绘制    QT3D场景提供了一种快速设置3D场景的一种方式,用户凭借着封装好的实体可以快速的在顶层实体(画布)当中增加各种各样的实体,并且通过3DMax软件构造的OBJ文件与QT3D实现信息交互可以的帮助用户摆脱OpenGL的用代码绘制图形的繁琐。本人在做这方面的工作时也看了很多来自CSDN的文章,但是直接将封装好的3D实体放入画布的例子有点少(是不是大家觉得太简单了?),所以作为一个QT3D建模…

    2022年6月4日
    33
  • 两个向量的夹角公式_两向量夹角(求两个向量的夹角公式)

    两个向量的夹角公式_两向量夹角(求两个向量的夹角公式)最低 0 27 元 天开通百度文库会员 可在文库查看完整内容 gt 原发布者 design ycl 两个向量的夹角的定义 对于非零向量 作称为向量 的夹角 当 0 时 同向 当 向量的夹角就是向量两条向量所成角其范围是在 0 到 180 度而向量夹角的余弦值等于 向量的乘积 向量模的积即 cos ab a b 两向量夹角怎么求 给的是坐标 要求步骤详细点 多谢夹角为 arccos

    2026年3月26日
    2
  • 使用iframe框架时,子页面内跳转整个页面

    使用iframe框架时,子页面内跳转整个页面由于开发需要 很多时候需要使用到 iframe 框架 即子页面 子页面使用是挺方便的 但如果子页面呢需要跳转整个页面呢 比如我就遇到了一个问题 我子页面有个功能需要登录 所以连接的是登录页面 但登录页面只在子页面中显示 这就显得很不合理了 在这里 我介绍几种方法 第一种 是比较大众的方法 及子页面内标签的整个页面跳转 只需在标签中添加 target parent 即可 第二种是在 head

    2026年3月18日
    2
  • 腾讯元宝、豆包、文小言、DeepSeek哪个更适合你?

    腾讯元宝、豆包、文小言、DeepSeek哪个更适合你?

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号