精华内容
下载资源
问答
  • 3、第3个循环:数组的最大值,和最大值对应下标(最小值同理) 4、第4个循环:输入要查找元素,若数组中存在该元素,打印该元素下标,否则打印无此元素 #include <iostream> using namespace ...

    注意:

    1、第1个循环:求出数组中各元素,对各元素进行累加得到累加和,求出平均值

    2、第2个循环:求出各元素对应的是奇数or偶数,并统计奇数和偶数的个数

    3、第3个循环:求出数组中的最大值,和最大值对应的下标(最小值同理)

    4、第4个循环:输入要查找的元素,若数组中存在该元素,打印该元素的下标,否则打印无此元素 

    #include <iostream>
    using namespace std;
    int main()
    {
        int nums[] = {1, 9, 6, 4, 8, 2};//定义一个数组
        int numslen = sizeof(nums) / sizeof(int); //定义数组的长度
        int sum = 0;//定义各数组的累加和
        int av_sum;//定义累加和之间的平均值
        
    
        //第1个循环,求出元素值、累加和、平均值
        for (int i = 0; i < numslen; i++)
        {
            cout << "第" << i+1 << "个元素是:" << nums[i] << endl;
            sum += nums[i];//计算各元素的累加和
        }
    
        av_sum = sum / numslen;
    
        cout << "所有元素之和为:" << sum << endl;//求和
        cout << "所有元素累加和的平均值为: " << av_sum << endl;//求平均值
    
        
        //第2个循环,求出奇数、偶数的个数
        int jcount = 0; 
        int ocount = 0;;//定义奇数和偶数的个数
    
        for (int i = 0; i < numslen; i++)
        {
            if (nums[i] % 2 == 0)
            {
                cout << "第" << i+1 << "个元素是:" << nums[i] << "\t该元素为偶数" << endl;
                ocount++;
            }
            else if (nums[i] % 2 != 0)
            {
                cout << "第" << i+1 << "个元素是:" << nums[i] << "\t该元素为奇数" << endl;
                jcount++;
            }        
        }
    
        cout << "该数组中含有偶数个数:" << ocount << endl;
        cout << "该数组中含有奇数个数:" << jcount << endl;
    
        
        //第3个循环,找出数组中的最大值和最小值
        int max = nums[0];//定义初始元素为max,
        int max_index = 0;    //定义最大值的下标
    
        for (int i = 1; i < numslen; i++)//注意i从1开始
        {
            if(nums[i] > max)  //之后的每个元素与max比较,谁大谁是max
            {
                max = nums[i];
                max_index = i;
            }
        }
    
        cout << "\n该数组的最大值为:" << max << endl;
        cout << "最大值对应的下标为:" << max_index << endl;
        
      
        //第4个循环,查找输入的数字在数组中的下标,没有找到则下标为-1
        int search_num;//需要查找的数字
        int search_index = INT_MIN;//需要查找的数字的下标,INT_MIN= -2^31
    
        cout << "\n请输入需要查找的元素:";
        cin >> search_num;//输入需要查找的元素
    
        for (int i = 0; i < numslen; i++)
        {
            if(nums[i] == search_num)
            {
                search_index = i;//打印该元素的下标
                break;//退出for循环
            }
        }
    
        if (search_index == INT_MIN) //search_inedx没有与之相匹配的值,说明无元素=输入值
        {
            cout << "数组中没有该数字!" << endl;
        }
        else
        {
            cout << "该元素在数组中的下标为:" << search_index << endl;
        }
        
    
    } // namespace std;
    
    

     

    展开全文
  • C语言:10 个整数中最大值

    千次阅读 2018-12-04 11:57:34
    10 个整数中最大值思路:10 个整数中最大值,可以利用数组完成对10个数储存,再用循环语句和条件语句来判断数大小, 把最大值赋值给最大值变量max,然后输出最大值。 代码如下: #include&lt;stdio...

    求10 个整数中最大值
    思路:求10 个整数中最大值,可以利用数组来完成对10个数的储存,再用循环语句和条件语句来判断数的大小,
    把最大值赋值给最大值变量max,然后输出最大值。

    代码如下:

    #include<stdio.h>
    int main()
    {
       int i,max;
       int array[10];
       printf("请输入十个整数:\n");
       for(i=0;i<10;i++)
       {
        scanf(" %d",&array[i]);
       }
       max=array[0];//数组第一个从0开始
       for(i=1;i<10;i++)
       {
          if(max<array[i])
        max=array[i];
       }
       printf("max=%d\n",max);
       return 0;
    }
    

     

     

     

     

    展开全文
  • 前面已经连载完数组、链表、栈、队列以及各自在面试中考察点,今天来学习...键值对的位置是通过hash函数key哈希来确定;存储结构哈希函数所有函数都是完成输入到输出映射,哈希函数完成的是由key到位...

    前面已经连载完数组、链表、栈、队列以及各自在面试中的考察点,今天来学习哈希表;

    哈希表

    我对哈希表的理解,本质上是键值对构成的集合;最大的特点是根据key查找value的时间复杂度为1。

    原因是:从存储结构上来讲,充分利用了数组按照位置查找,时间复杂度为O(1)的特点;

    键值对的位置是通过hash函数对key求哈希值来确定的;

    bdb1a62aca7559f31809f29f79e4aaf0.png

    存储结构

    哈希函数

    所有的函数都是完成输入到输出的映射,哈希函数完成的是由key到位置的映射;

    即输入时key,输出时其在数组的位置;

    设计哈希函数时应注意 以下几点:

    • 函数计算不能过于复杂,这会影响增删查的性能
    • 函数的返回值是int类型,并将尽可能的随机&均匀分布
    • 相同的key必须要得到相同的返回,不同的key最大程度的保证其返回值不同

    java的hash函数计算非常巧妙,借助位运算与hashCode实现,而不是直接取模:

    static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}

    哈希冲突解决方式

    hash冲突:两个不同的key经过hash函数计算之后,得到了同样的位置,这时应该如何存储。

    1.开放寻址法

    假如hash计算之后,应该存储与第3个位置,但是第三个位置已经有元素,这时候进行加1,即看看第4个位置是否有元素;依次进行直到找到空闲位置。

    除了加1之外,还可以加1^2,如果被占用,可以加2^2;依次类推...

    或者是经过二次hash等;

    开放寻址法的缺点是,但查找元素时,如果hash计算的位置有元素,不一定是查找的元素,需要进行对比;如果不是,则需要按照开放寻址的思路,直到查找至空闲位置为止;

    另外删除元素时不能直接删除,否则上面的查找逻辑就会出问题,需要标记为删除。

    2. 拉链法

    遇见冲突之后,采用链表数据结构;如下图所示:

    d29ebe5c598105ed9ff7bcc500bd3e55.png

    拉链法

    这时查找元素时,首先确定对应位置;然后进行链表遍历。

    扩容机制

    关于装载因子,指的是数组已使用的个数与数组长度比值,比如数组长度是10,已经有6个位置放置元素,那么装载因子是6/10 = 0.6;

    当装载因子大于设定的阈值之后,需要扩容;

    哈希表的扩容不同于一般的数据扩容,需要涉及到扩容之后位置的重新计算

    java语言中采用的是,当需要扩容时,直接扩容至当前容量的两倍;

    扩容时需要注意不要超过最大容量;

    核心代码如下:

    ... ...else if ((newCap = oldCap << 1) < MAXIMUM_CAPACITY && oldCap >= DEFAULT_INITIAL_CAPACITY) newThr = oldThr << 1; // double threshold... ...Node[] newTab = (Node[])new Node[newCap];table = newTab;...//新位置计算newTab[e.hash & (newCap - 1)] = e;
    50f55c15cc5bb043efa8cb926cb5fc91.png

    实际上,插入元素如果遇见扩容时,效率时非常慢的;

    ====

    技术连载:开篇词

    技术连载:连载提纲设计思路

    技术连载:数据结构 - 数组

    技术连载:数据结构 - 数组常见面试题汇总

    技术连载:数据结构 - 链表

    技术连载:数据结构 - 链表相关的高频面试题汇总

    技术连载:数据结构 - 栈

    技术连载:数据结构 - 栈在面试中的应用

    技术连载:数据结构 - 队列及其变种(循环、双端、阻塞、并发)

    技术连载:数据结构 - 从源码出发分析java中的队列实现

    展开全文
  • 5. 按由大到小顺序一个含有N个整型数据的数组A[N]进行排序,利用如下改进选择排序方法:第一次选出最大者存入A[1],第二次选出最小者存入A[N],第三次选出次大者存入A[2],第四次选出次小者存入A[N-1],如此大小...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.12 我不想学习那些复杂的规则,怎样才能避免这些未定义的求值顺序问题呢? 其他的表达式问题 *3.13 ++i和i++有什么区别? 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 3.15 我要检查...
  • C语言科学和艺术.pdf

    热门讨论 2012-01-19 14:09:05
    4.3.3 简化求值 81 4.3.4 标志 82 4.3.5 避免布尔表达式中冗余 82 4.3.6 布尔计算示例 83 4.4 if语句 84 4.4.1 单行if语句 85 4.4.2 多行if语句 86 4.4.3 if/else语句 86 4.4.4 级联if语句 86 4.4.5 ?: ...
  • excel使用

    2012-11-25 17:06:01
    ,此时C1中数据形式就符合要求了,再用鼠标向下拖动C1单元格,完成对A列和B列所有内容合并(如图3-4)。合并不同单元格内容,还有一种方法是利用CONCATENATE函数,此函数作用是将若干文字串合并到一个字串...
  • 3.12 我不想学习那些复杂的规则,怎样才能避免这些未定义的求值顺序问题呢? 38 其他的表达式问题 39 *3.13 ++i和i++有什么区别? 39 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 39 ...
  • 对于连续子数组,可以用一个数值来存储当前和,如果当前和小于零,那么在进行到下一个元素时候,直接把当前和赋值为下一个元素,如果当前和大于零,则累加下一个元素,同时用一个maxNum存储最大值并随时更新。...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.12 我不想学习那些复杂的规则,怎样才能避免这些未定义的求值顺序问题呢? 38 其他的表达式问题 39 *3.13 ++i和i++有什么区别? 39 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 39 ...
  • 剑指offer典型面试题

    2019-01-08 16:33:41
     利用数组特点O(n)算法  解法比较  面试题30:最小k个数  O(n)算法,只当可以修改输入数组时可用  O(nlogk)算法,适合处理海量数据  解法比较  面试题31:连续子数组的最大和  举例分析数组规律 ...
  • 与cgi区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI每个请求都产生新进程,服务完成后就销毁,所以效率上低于servlet。...
  • //32767为整型数的最大值 max2=32767; for(j=0;j;j++) if(Node[j].parent==-1) if(Node[j].weight) { max2=max1; //原最小值变为次小值 max1=Node[j].weight; //存放最小值 pos2=pos1; //...
  • 利用数组特点O(n)算法 165 解法比较 166 面试题30:最小k个数 167 O(n)算法,只当可以修改输入数组时可用 167 O(nlogk)算法,适合处理海量数据 168 解法比较 169 面试题31:连续子数组的最大和 171 举例分析...
  • 图像增强实现

    2012-06-07 15:42:03
    NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16; OPT 指定了编码方式(缺省值为 'mat'),即: OPT='row' ,按行编码 OPT='col' ,按列编码 OPT='mat' ,按整个矩阵编码 ABSOL 是函数控制参数...
  • 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格列名与列宽 3.2 数组操作 实例046 数组下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框控件数组 实例049 用数组反转字符串 ...
  • 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格列名与列宽 3.2 数组操作 实例046 数组下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框控件数组 实例049 用数组反转字符串 ...
  • 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格列名与列宽 3.2 数组操作 实例046 数组下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框控件数组 实例049 用数组反转字符串 ...
  • 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格列名与列宽 3.2 数组操作 实例046 数组下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框控件数组 实例049 用数组反转字符串 ...
  • 实例044 利用数组随机抽取幸运观众 实例045 用数组设置JTable表格列名与列宽 3.2 数组操作 实例046 数组下标界限 实例047 按钮控件数组实现计数器界面 实例048 复选框控件数组 实例049 用数组反转字符串 ...
  • 数据结构与算法.xmind

    2020-06-19 17:04:23
    同时获取最大值和最小值,然后分别插入数组的首部和尾部 堆排序 思想 使用大顶堆思想来排序,每次建堆后交换 做法 总体:建堆-替换 建堆 只要左子树或右子...
  • ④ 由输入整数分解排序后的数组得到最大值和最小值: int getmaxn(int a[ ]) 返回值为最大值 int getminn(int b[ ]) 返回值为最小值 (13)函数 fun 功能是:计算正整数num各位上数字之积。例如,若输入:...

空空如也

空空如也

1 2 3 4 5 6
收藏数 101
精华内容 40
关键字:

利用数组完成对最大值的求值