版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序实现
voidmain(){inti,t,a[N];printf("Enter%dNumbers:\n",N);//提示输入数据
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N/2;i++)
//将数组倒置
{t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;
}
for(i=0;i<N;i++)
//输出倒置后的数组
printf("%d
",a[i]);}#define
N
8【例2:】从键盘上输入10个数,求出其中最大值并输出解题思路采用打擂台的方法:先把10个数存在数组中,指定第一个数为擂主(最大),然后擂主依次与其他数比较,若某数大于擂主,则该数为擂主。循环结束,擂主变量中一定是最大的数程序实现#define
N
10#include<stdio.h>voidmain(){inti,p,a[N];//变量p用于存放最大值的下标
printf("Enter%dNumbers:\n",N);//提示输入数据for(i=0;i<N;i++)scanf("%d",&a[i]);p=0;//先指定第一个数最大
for(i=1;i<N;i++)if(a[i]>a[p])p=i;printf(“最大值是:a[%d]=%d\n",p,a[p]);}【例3:】用冒泡排序法对6个数进行排序(升序)972541a[0]a[1]a[2]a[3]a[4]a[5]72541
927754712541794515241
5
7921
4
5
7
914129725419999972541初始状态第1轮第2轮第3轮第4轮第5轮7依次比较相邻的两个数,将小数放前面,大数放后面。经过第1轮(共5次比较与交换)后最大的数9已“沉底”。再对余下的前面5个数进行第二轮比较,次大的数又被安置......n个数排序需要进行n-1轮比较,从第1轮到第n-1轮,各轮的比较次数依次为:n-1次、n-2次…1次,第i轮比较中要进行n-i次两两比较程序实现#defineN6#include<stdio.h>voidmain(){inta[N],i,j,t;
for(i=0;i<N;i++)scanf(“%d”,&a[i]);for(i=0;i<N-1;i++)//外层循环控制进行几轮比较for(j=0;j<N-1-i;j++)//内层循环控制每轮的比较次数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(“%3d”,a[i]);}谢谢西华大学一维数组使用举例数组【例4:】用选择排序法对6个数进行排序(升序)972541a[0]a[1]a[2]a[3]a[4]a[5]12457912457997254191初始状态第1轮第2轮第3轮第4轮第5轮p=0p=1p=2p=5
172549p=1p=227
1
27549p=247p=3p=4p=3p=4从所有元素中选择一个最小值元素a[p]放在a[0]中(即让最大值元素a[p]与a[0]交换);再从a[1]开始到最后的各元素中选择一个最小值元素a[p]放在a[1]中;…依次类推…从a[i]开始到最后的各元素中选择一个最小值元素a[p]放在a[i]中程序实现#defineN6#include<stdio.h>voidmain(){inta[N],i,j,p,temp;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++)//外层循环控制进行几轮比较
{
p=i;for(j=i+1;j<N;j++)//内层循环控制每轮的比较if(a[j]<a[p])p=j;if(p!=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}for(i=0;i<N;i++)printf("%5d",a[i]);}【例5:】使用顺序查找法在数组中查找某个特定的数据x。如果找到,则返回该数据位置解题思路设有N个数据放在a[0]---a[N-1]中,待查找的数据值为x,把x与a数组中的元素从头到尾一一进行比较查找,若相同,查找成功,若找不到,则查找失败程序实现#defineN10#include<stdio.h>main(){inti,x,f=0,a[N];
for(i=0;i<N;i++)scanf(“%d”,&a[i]);printf(“请输入待查找的数:\n”);scanf(“%d”,&x);for(i=0;i<N;i++)if(x==a[i]){f=1;break;}if(f==1)printf(“找到了!是第%d号元素。\n”,i);elseprintf(“找不到!\n”);}【例6:】使用折半查找法(二分查找)在数组中查找某个特定的数据x。如果找到,则返回该数据位置前提:数据已按一定规律(升或降序)排列好思路:先检索中间的数据是否所需,如不是,判断要找的数据在哪一边,缩小范围后再按同样方法继续检索,直到找到或找遍算法:设要找的数为x,N个数据已按升序排好存放在数组a中a、设bot=0,top=N-1mid=(bot+top)/2b、if(x==a[mid])找到了;c、elseif(x>a[mid])说明x在右边,让bot=mid+1;
else说明x在左边,让top=mid-1。重复b和c两步操作,直到x==mid(找到)或bot>top(找遍了)为止数据查找
x>a[mid]botmidtopbotbot=mid+1midx<a[mid]top=mid-1toptopbot找到x>a[mid]bot=mid+1topbotx==a[mid]x>a[mid]botmidtopbotbot=mid+1midx>a[mid]topbot=mid+1topbottopbotx<a[mid]toptop<bot没找到数据查找
#defineN10#include<stdio.h>voidmain(){inta[N]={1,4,7,13,16,19,28,36,49,60};intbot=0,mid,top=N-1,x;printf("请输入要查找的数x=");scanf("%d",&x);while(bot<=top){mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新型小学德育软件的实践与探索
- 教科版科学一年级上册第一单元《植物》测试卷含完整答案【易错题】
- 公客户数据挖掘在保险行业的应用分析
- 企业文化在安全生产中的作用与价值
- 健康饮食习惯的培养与维护
- 办公场所安全管理与文化建设
- 手术中的患者信息隐私保护要求
- 企业数据安全的密码学解决方案
- 个性化演讲吸引观众-以主题与专业结合为方向的汇报方法探索
- 2025广告装饰合同范文
- NB-T47003.1-2009钢制焊接常压容器(同JB-T4735.1-2009)
- 聚焦高质量+探索新高度+-2025届高考政治复习备考策略
- 惠州市惠城区2022-2023学年七年级上学期期末教学质量检测数学试卷
- 北京市西城区2022-2023学年七年级上学期期末英语试题【带答案】
- ISO45001-2018职业健康安全管理体系之5-4:“5 领导作用和工作人员参与-5.4 工作人员的协商和参与”解读和应用指导材料(2024A0-雷泽佳)
- 看图猜成语共876道题目动画版
- 小学二年级上册数学-数角的个数专项练习
- 曲式与作品分析智慧树知到期末考试答案章节答案2024年兰州文理学院
- 园林设施维护方案
- 特种设备使用单位日管控、周排查、月调度示范表
- 供应链成本控制与降本增效
评论
0/150
提交评论