有一个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个数字相关推荐

  1. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

  2. 扑克牌中的顺子。从扑克牌中随机抽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,而大.小王可以看成任意数字 ...

  3. 七周三次课(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语法 ====== ...

  4. Java黑皮书课后题第10章:*10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字

    10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字 法一 破题 代码 运行结果 法二 破题 代码 运行结果 法一 破题 本题通过基本数据类型无解(求不出来,不是没有解) ...

  5. Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...

    键盘是一种必备的输入设备,其应用率最高的就是10个数字和26个字母.如果将这10个数字和26个字母与Ctrl键组合,并应用到Excel中,会是怎样的一种体验. 一.Ctrl与数字键. 1.Ctrl+1 ...

  6. java 1亿个数字中_求一亿个数字里面最小的10个数字

    package com.yuzhiyun;import java.util.Arrays;/** * 求一亿个数里面最小的10个数 * 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶 ...

  7. 组合学:使用10个数字与52个字母生成1477万个不重复的4位串码V3完结版本

    一.主要思想(进位制思想): 将0-9-A-z,62个字符做为一个进制系统,存入一个数组,既62位数字进制,4位串码前位不够补0. 累加的操作只需要将末位往后移动一位循环移动,逢"Z&quo ...

  8. 求一亿个数字里面最小的10个数字

    package com.yuzhiyun;import java.util.Arrays;/*** 求一亿个数里面最小的10个数* 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶比较 ...

  9. 组合学:26个字母(含大小写)和10个数字组合为4位串的可能性测算

    使用26个字母(含大小写,实际为52个字母)和10个数字组合一个4位的串码,问有多少种组合? 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' ...

最新文章

  1. 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
  2. Nancy总结(三)Nancy资料介绍
  3. 算法--微软面试:指定数字在数组中出现的次数
  4. 灵魂拷问:后端业务开发要会用 K8s 到什么程度?
  5. 【Python】精选22个Pandas函数!
  6. boost::geometry::is_convex用法的测试程序
  7. [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)
  8. 2018/Province_Java_C/3/字母阵列
  9. 【操作系统】同步和互斥
  10. 再问数据中台-数据中台和数据仓库,数据平台的关系是什么?
  11. 单片机定时器中断原理
  12. 字节跳动副总裁喊话腾讯:停止无理由封杀飞书;Git服务器配置错误导致日产汽车源码泄露;Linux5.10.5 发布
  13. 修复RAID-5和镜像磁盘
  14. 轻量级监控系统 - Monitorix
  15. python自然语言理解_python自然语言处理——1.5 自动理解自然语言
  16. matlab gui编写计算器,怎样用MATLAB中的GUI做一个简单计算器
  17. Unity的序列化机制探索
  18. flush table mysql_MySQL flush table 导致的锁问题
  19. 装机吧盘点电脑自动重启的解决办法
  20. 微信公众号的图片引用

热门文章

  1. 每个JavaScript开发人员应该知道的33个概念
  2. Ubuntu16.04 开发环境配置
  3. 着色器(Shader)之顶点着色器
  4. 如何制作一款像超级玛丽兄弟一样基于平台的游戏-第一部分 (xcode,物理引擎,TMXTiledMap相关应用)
  5. HTML超级马里奥代码(简单)
  6. 计算机信息安全op协议,2019工业信息安全技能大赛个人线上赛第一场(前5道)writeup • 旭达网络技术博客...
  7. Linux中查看进程的虚拟地址空间内存布局
  8. 了解图像分割的深度学习技术(2019年语义分割论文综述)
  9. 万达保安“苦修Java”,7个月破茧成蝶,如今薪资翻了4倍
  10. docker pull 下载一半_docker镜像pull不下来最终解决方法