11个中最大的10个数字
有一个10个数nA[10]的有序数组(从小到大),来了第11个数nNum,得出11个中最大的10个数字(排序方式(从小到大)不变),要求比较次数越少越好!
这是采用折半查找算法的程序
当要插入的数字小于第一个或者与有数字相等的时候,就不做插入工作。
void FindNumber()
{
int i,j,Number[10],temp;
int low = 0,high = 10,value;
int num,flag=0;
//随机产生数组
srand((unsigned)(time(NULL)));
for(i=0;i<10;i++)
Number[i] = rand()%100;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(Number[j] > Number[j+1])
{
temp = Number[j];
Number[j] = Number[j+1];
Number[j+1] = temp;
}
}
}
//打印数组
for(i=0,j=0;i<10;i++)
{
j++;
printf("%d/t",Number[i]);
if(j%6 == 5)
printf("/n");
}
//随机产生要插入的数字
num = rand()%100;
printf("/nThe Givened Number is %d",num);
//查找重复数字的位置
if(num <= Number[0])//小于第一个啥都不用干
printf("/nInsert None Number");
else
{
//折半查找
while(1)
{
value = low + ((high - low)/2);
if(Number[value] > num)
high = value;
else if(Number[value] < num)
low = value;
else
{
flag = 1;//表示有相等的情况
break;
}
if(low == high-1)
break;
}
//处理收尾工作(插入要插入的数字)
if(flag != 1)
{
printf("/nInsert Number %d",num);
temp = 0;
for(i=0;i<10;i++)
{
if(i == low)
{
temp = Number[high];
Number[low] = num;
}
else
{
if(i>low)
{
Number[i] = temp;
temp = Number[i+1];
}
else
Number[i] = Number[i+1];
}
}
}
else
printf("/nInsert None Number");
}
//打印数组
printf("/n");
for(i=0,j=0;i<10;i++)
{
j++;
printf("%d/t",Number[i]);
if(j%6 == 5)
printf("/n");
}
printf("/n");
}
11个中最大的10个数字相关推荐
- Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...
- 扑克牌中的顺子。从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。
面试题36:扑克牌中的顺子 1.题目描述 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2~10为数字本身,A为1,J为11,Q为12,K为13,而大.小王可以看成任意数字 ...
- 七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...
七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 ====== ...
- Java黑皮书课后题第10章:*10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字
10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字 法一 破题 代码 运行结果 法二 破题 代码 运行结果 法一 破题 本题通过基本数据类型无解(求不出来,不是没有解) ...
- Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
键盘是一种必备的输入设备,其应用率最高的就是10个数字和26个字母.如果将这10个数字和26个字母与Ctrl键组合,并应用到Excel中,会是怎样的一种体验. 一.Ctrl与数字键. 1.Ctrl+1 ...
- java 1亿个数字中_求一亿个数字里面最小的10个数字
package com.yuzhiyun;import java.util.Arrays;/** * 求一亿个数里面最小的10个数 * 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶 ...
- 组合学:使用10个数字与52个字母生成1477万个不重复的4位串码V3完结版本
一.主要思想(进位制思想): 将0-9-A-z,62个字符做为一个进制系统,存入一个数组,既62位数字进制,4位串码前位不够补0. 累加的操作只需要将末位往后移动一位循环移动,逢"Z&quo ...
- 求一亿个数字里面最小的10个数字
package com.yuzhiyun;import java.util.Arrays;/*** 求一亿个数里面最小的10个数* 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶比较 ...
- 组合学:26个字母(含大小写)和10个数字组合为4位串的可能性测算
使用26个字母(含大小写,实际为52个字母)和10个数字组合一个4位的串码,问有多少种组合? 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' ...
最新文章
- 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
- Nancy总结(三)Nancy资料介绍
- 算法--微软面试:指定数字在数组中出现的次数
- 灵魂拷问:后端业务开发要会用 K8s 到什么程度?
- 【Python】精选22个Pandas函数!
- boost::geometry::is_convex用法的测试程序
- [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)
- 2018/Province_Java_C/3/字母阵列
- 【操作系统】同步和互斥
- 再问数据中台-数据中台和数据仓库,数据平台的关系是什么?
- 单片机定时器中断原理
- 字节跳动副总裁喊话腾讯:停止无理由封杀飞书;Git服务器配置错误导致日产汽车源码泄露;Linux5.10.5 发布
- 修复RAID-5和镜像磁盘
- 轻量级监控系统 - Monitorix
- python自然语言理解_python自然语言处理——1.5 自动理解自然语言
- matlab gui编写计算器,怎样用MATLAB中的GUI做一个简单计算器
- Unity的序列化机制探索
- flush table mysql_MySQL flush table 导致的锁问题
- 装机吧盘点电脑自动重启的解决办法
- 微信公众号的图片引用
热门文章
- 每个JavaScript开发人员应该知道的33个概念
- Ubuntu16.04 开发环境配置
- 着色器(Shader)之顶点着色器
- 如何制作一款像超级玛丽兄弟一样基于平台的游戏-第一部分 (xcode,物理引擎,TMXTiledMap相关应用)
- HTML超级马里奥代码(简单)
- 计算机信息安全op协议,2019工业信息安全技能大赛个人线上赛第一场(前5道)writeup • 旭达网络技术博客...
- Linux中查看进程的虚拟地址空间内存布局
- 了解图像分割的深度学习技术(2019年语义分割论文综述)
- 万达保安“苦修Java”,7个月破茧成蝶,如今薪资翻了4倍
- docker pull 下载一半_docker镜像pull不下来最终解决方法