美文网首页
2018-06-13 机试准备03

2018-06-13 机试准备03

作者: Huxx499 | 来源:发表于2018-06-13 18:56 被阅读0次

Hash值的应用

将存储位置与数据本身对于起来的存储手段


一、例2.5 统计同成绩学生人数

在已知该例可以用Hash的前提下 实现还是很简单的 只怕实际做题时想不到该方法。。

需要注意的是:

初始化总是忘记要比用例数量多+1 如0~100的整数应该是Hash[101] 

并且数组初始化为0是Hash[101]={0} 不是直接=0


二、例2.6 Sort (按从小到大输出前m大的数)

条件:待排序的数字数量为1,000,000; 数据范围为[-500,000,500,000]且各不相同;时间限制1s

分析:即使是快排,复杂度O(nlogn),也会达到千万级,超过1s;

          数据范围有限,考虑Hash,利用一个数组分别统计每一种数字是否出现。

心得:这道题一开始真的没想到怎么用Hash,但是一看到上面这句话就想通了(可怕!

           接下来再从尾到头遍历数组,时间复杂度在1,000,000百万级

代码出现的问题:

1)最开始定义a[1000001]={0}这个数字时,放在了main函数里,导致运行时栈溢出。也就是说大数组应该定义在main函数外。

原因分析:

数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。而全局变量是在编译的时候编到数据段的,可以比较大。

全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。(c语言程序在运行时会动态创建一个堆栈段,里面存放着调用栈,保存着函数的调用关系和局部变量。)如果数组太大,可能会造成栈溢出。

所以对于大数组的定义,要么定义为全局变量,要么动态分配内存(malloc()来开辟堆空间,堆空间中的内存是按需分配,自由增长的,可以非常大,32位的系统中可以大到4GB。)

2)该大数组虽然需要在外部定义,但是也需要在内部初始化,以免多组数据中用到已经赋值的数组,影响结果。

3)输出样例中,每个数字间隔了一个空格,但最后一个数字后无空格,所以应该控制好空格的输出

其他可改善的地方:

参考代码中用到了OFFSET, 更有可读性  #define OFFSET 500000

考虑题目中指明了数据“各不相同” 所以另外实现了数据相同时的Hash方法。其中主要的问题是空格的控制比较不熟练。

相关文章

  • 2018-06-13 机试准备03

    Hash值的应用 将存储位置与数据本身对于起来的存储手段 一、例2.5 统计同成绩学生人数 在已知该例可以用Has...

  • 2018-06-13 机试准备04

    排版题 一、例2.7 输出梯形 该规律顺序与输出顺序一致,可以从上至下、从左至右应用规律。 二、例2.8 叠筐 图...

  • Ambari 2.6.2安装Hadoop hbase集群

    一、环境准备 1、集群规划 01和02主要做管理机,03-05做数据数据节点,01-03做zookeeper集群。...

  • 机试

    package com.example.js; import android.app.Activity; impo...

  • Ambari2.7.3 和HDP3.1.0搭建Hadoop集群

    一、环境及软件准备 1、集群规划 01和02主要做管理机,03-05做数据数据节点,01-03做zookeeper...

  • 2018-06-09 机试准备01

    今天开始正式日常做机试训练(参考书:计算机考研--机试指南)记录一些问题/解决办法/知识回顾/易错点/心得之类的。...

  • 2018-06-10 机试准备02

    日期类: 一、例2.3 求两个日期间的天数差;区间问题:统一区间 自己的写法 思路/错误: 1)统一到0000年0...

  • 2018-06-17 机试准备07

    数据结构 二、哈夫曼树(栈部分还没做完) 定义: 给定n个结点和它们的权值,以它们为叶子节点构造一棵带权路径长度和...

  • 2018-06-17 机试准备08

    数据结构 三、二叉树 遍历:前序(中左右)、中序(左中右)、后序(左右中)--------递归实现 一、例3.4 ...

  • 2018-06-14 机试准备05

    查找 一、例2.9 找x 此题很简单 线性遍历数组查找 O(m) 只是为了回忆该题型 发现自己写的和参考实例不同的...

网友评论

      本文标题:2018-06-13 机试准备03

      本文链接:https://www.haomeiwen.com/subject/hnhseftx.html