C语言—数组一维(含冒泡排序)

1.用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值;  

/*1.用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值;*/#include <stdio.h>int main(void)
{int nums[10] = {11,22,33,44,55,66,77,88,99,100};int i;int n;//遍历数组的数打印给用户printf("数组中的元素为:");for(i = 0;i < 10;i++){printf("%-3d",nums[i]);}printf("\n");//让用户输入一个整数printf("请输入一个整数:");scanf("%d",&n);for(i = 0; i < 10;i++)  //遍历数组的元素{if(nums[i] == n){break;  //找到与之匹配的元素,跳出循环}}if(i < 10)  //下标小于10说明找到了输入的数{printf("该数组的下标值为: %d\n",i);}else{printf("数组中未找到该数。\n");}return 0;
}


2.通过键盘输入 10 个学员成绩,
   1)输出不及格学员的成绩和下标。
   2)求最高分的下标值
   3)求最低成绩的下标值
   4)求总成绩及平均成绩

/*2.通过键盘输入 10 个学员成绩,1)输出不及格学员的成绩和下标。2)求最高分的下标值3)求最低成绩的下标值4)求总成绩及平均成绩 */#include <stdio.h>int main(void)
{float score[10] = {0};int i = 0;for(i = 0;i < 10;i++){printf("请输入第%d个学生成绩:",i+1);scanf("%f",&score[i]);}float sum =0;int maxid = 0,minid = 0;for(i = 0;i < 10;i++){sum += score[i];if(score[i] < 60){printf("下标为%d的学生成绩不合格,成绩为:%.1f\n",i,score[i]);}if(score[maxid] < score[i])  //这里当最大值小于数组的元素i,则将i赋值给maxid{maxid = i;}if(score[minid] > score[i])  //当最小值minid大于数组元素i,则将数组i赋值给minid{minid = i;}}float ave = sum / 10;  //求均值printf("=================================\n");printf("最高分: %.1f,下标为: %d\n",score[maxid],maxid);printf("最低分: %.1f,下标为: %d\n",score[minid],minid);printf("总成绩: %.1f,平均成绩为: %.1f\n",sum,ave);return 0;
}


3.利用冒泡的排序思想将数据由大到小排序;

    数据的典型应用--数据排序
       冒泡排序
            向后冒泡(算法思想):1.两两进行数据交换,一次排序只排好最大的一个数,第二次是次大以此类推,交换(两两进行交换)
             向前冒泡:认为第一个数据已经排好,所有数据和第一个数据进行交换,第二次所有的数和第二个数 据进行交换(固定好一个数据其他数据进行交换)到n-2数据排序结束

1)向后冒泡(第一次把最大的数排号,第二次把次大的排序...以此类推向后冒泡)

数组不能越界

(全部比较数据会减少)

(依次排序过程两辆交换,一次排好一个数)

(嵌套循环经过多次)

(每完成一次数据减少)7 4 6 2 3 8 1 5

1. 一次排序只排好一个数,针对 n 个数,最差情况需要 n -1 次排序就可以排好;
2. 每次排序将相邻两个数据两两比较,将较大/较小的数向后交换,等所有的数据都比较完毕,较大/较小的数就会出现在最后,这也是该数应该有的位置。也就是说 排好了一个数;
3. 在剩余的数据中,再次应用第2步的操作,直到只剩下一个数。

#include <stdio.h>int main(void)
{int a[] = {7,4,6,2,3,8,1,5};int n = sizeof(a) / sizeof(a[0]);int i = 0,j = 0;for(i = 0; i < n; i++){printf("%3d",a[i]);}printf("\n");for(i = 0; i < n-1; i++){for(j = 0; j < n-1 - i;j++){if(a[j] > a[j+1])  //前一个比后一个元素大,进行交换{int t = a[j];a[j]  = a[j+1];a[j+1]= t;}}}printf("========排序后========\n");for(i = 0; i < n; i++){printf("%3d",a[i]);}printf("\n");return 0;
}

2)向前冒泡:向前冒泡从第二个元素开始和第一个数(固定数)比较,位置不动,先把最小的排出来在(认为一个数最小开始比较)

1. 一次排序只排好一个数,针对 n 个数,最差情况需要 n -1 次排序就可以排好;
2. 每次排序假定第一个数据是最大/最小的.用第一个数据之后的所有数据和第一个数据比较,遇到较大/较小的数据和第一个数据交换,访问完所有的数据,最前面的数据就排好了。
3. 在剩余的数据中,再次应用第2步的操作,直到只剩下一个数。

#include <stdio.h>int main(void)
{int a[] = {7,9,1,4,5,8,3,2,6};int n = sizeof(a) / sizeof (a[0]); //计算数组元素的总数,一个很好用的公式int i = 0,j = 0;for(i = 0; i < n; i++){printf("%3d",a[i]);   打印数组元素,%3d指定宽度为3,不足部分用空格填充}printf("\n");for(i = 0; i < n-1;i++)  // 外层循环用于控制排序次数{for(j = i+1; j < n; j++)  //内层循环实现每一次排序,找到从i+1到n-1的元素{if(a[j] < a[i])  //若找到更小元素,更新下标也就是索引{int t = a[j];a[j] = a[i];a[i] = t;}}}for(i = 0; i < n; i++){printf("%3d",a[i]);}printf("\n");return 0;
}

冒泡排序是排序中最简单的(?),当然也是效率最低的,她一次只排好一个数

区别:思想上是有一点点区别的,当然最后结果是一致的

向后冒泡:是通过比较和交换相邻元素来逐渐将最大的元素移动到数组的末尾。
向前冒泡:通过在每次外层循环中找到未排序部分的最小元素,并将其移动到未排序部分的起始位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java实现贫困地区人口信息管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

详解Python中的str.format方法

字符串的内置方法大致有40来个&#xff0c;但是一些常用的其实就那么20几个&#xff0c;而且里面还有类似的用法&#xff0c;区分度高比如&#xff1a;isalpha,isalnum,isdigit&#xff0c;还有一些无时不刻都会用到的split切分&#xff0c;join拼接&#xff0c;strip首尾去指定…

深度学习的新进展:探索人工智能的未来

文章目录 &#x1f4d1;引言深度学习技术概述计算机视觉领域的深度应用自然语言处理的深度革命跨领域应用的深度拓展深度学习的挑战与未来展望结语 &#x1f4d1;引言 在科技日新月异的今天&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正在引领着技术创新…

Nvidia 推出了本地版聊天 Chat with RTX;OpenAI联创Karpathy宣布离职专注个人项目

&#x1f989; AI新闻 Nvidia 推出了本地版聊天 Chat with RTX 摘要&#xff1a;英伟达最近发布了名为“Chat with RTX”的Demo版个性化AI聊天机器人&#xff0c;适用于Windows平台&#xff0c;需要Nvidia的30系/40系显卡&#xff0c;显存至少为8GB&#xff0c;系统配置包括1…

极市平台 | 16个图像分类方向开源数据集资源汇总(附下载链接,建议收藏!)

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;16个图像分类方向开源数据集资源汇总&#xff08;附下载链接&#xff09; 本文汇总了16个图像分类相关的开源数据集&#xff0c;均附有下载链接。要构建…

Shell 学习笔记(三)-shell变量

Shell 语言是一种动态类型和弱类型语言, 因此,在Shell中无需显示地声明变量, 且变量的类型会根据不同的操作符而发生变化. 静态类型语言: 在程序编译期间就确定变量类型的语言, 如java, C等 动态类型语言: 在程序运行期间才确定变量类型的语言, 如PHP, Python等. 一 shell变量…

姿态传感器MPU6050模块的基本使用总结

以下两篇文章可作为参考&#xff1a; 姿态传感器MPU6050原理及应用超详细讲解 - 采芯网 基于STM32的四旋翼无人机项目&#xff08;二&#xff09;&#xff1a;MPU6050姿态解算&#xff08;含上位机3D姿态显示教学&#xff09;-CSDN博客 基本介绍 随着科技的发展&#xff0c;我们…

保安员题不会怎么搜答案?推荐你使用这5个公众号和工具 #知识分享#微信#经验分享

大学生搜题软件是一种方便快捷的工具&#xff0c;可以帮助大学生们在解答问题和完成作业时节省时间和精力。 1.灵兔搜题 这是一个公众号 题库包括四六级答案、各学校往期课后答案、期末考试题等&#xff0c;使用比较简单。 下方附上一些测试的试题及答案 1、公民应当遵守下…

【MySQL】外键约束的删除和更新总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-7niJLSFaPo0wso60 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

(二)【Jmeter】专栏实战项目靶场drupal部署

该专栏后续实战示例&#xff0c;都以该篇部署的项目展开操作。 前置条件 参考“&#xff08;一&#xff09;【Jmeter】JDK及Jmeter的安装部署及简单配置” 安装部署Jmeter&#xff0c;从文章最后下载“Postman、Rancher.ova、VirtualBox-7.0.12-159484-Win.exe、Xshell-7.0.01…

考研高数(导数的定义)

总结&#xff1a; 导数的本质就是极限。 函数在某点可导就必连续&#xff0c;连续就有极限且等于该点的函数值。 例题1&#xff1a;&#xff08;归结原则的条件是函数可导&#xff09; 例题2&#xff1a; 例题3&#xff1a;