
笔试-数据结构与算法
Exrick
Make IT Happen
展开
-
把4,7,11,10,13,9按顺序插入形成平衡二叉树的高度是几
网易2017实习生招聘笔试题-Java开发工程师 把4,7,11,10,13,9按顺序插入形成平衡二叉树的高度是几 A 3 B 4 C 5 D 6具体选项忘记了 个人参考答案:高度为3基础知识点扩展:满二叉树:每一层节点数均达最大值完全二叉树:除了最外层,其余层上节点数均达最大值,且最外层节点均集中在左侧二叉排序树又称二叉查找树,亦称二叉搜索树:左子树上的值均小原创 2017-03-28 20:24:29 · 5594 阅读 · 2 评论 -
以下哪种数据结构的查找效率最高
网易2017实习生招聘笔试题-Java开发工程师 以下哪种数据结构的查找效率最高 A 二叉树 B 队列 C 栈 D hash个人参考答案:D欢迎下方讨论交流原创 2017-03-25 16:05:53 · 21418 阅读 · 1 评论 -
有10000000条数据,用以下什么排序算法用时最短
网易2017实习生招聘笔试题-Java开发工程师 有10000000条数据,用以下什么排序算法用时最短 A 堆排序 B 快速排序 C 希尔排序 D 归并排序个人参考答案 A 堆排序数据量为千万,设每个数据为整型int,即4字节,4000 0000字节约也就38Mb,暂时不用考虑内存问题即外排序(归并),且题目没限制内存。具体参考http://bbs.csdn原创 2017-03-25 15:54:07 · 2070 阅读 · 0 评论 -
归并排序+外部排序(多路归并排序)
归并排序(Merge)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。分治思想:涉及递归,例如归并排序、堆排序、快速排序等归并排序其实要做两件事:(1)“分解”——将序列每次折半划分。(2)“合并”——将划分后的序列段两两合并后排序。算法#include <stdlib.h>#includ原创 2017-03-30 11:20:04 · 2496 阅读 · 0 评论 -
堆排序
堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆, 满足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]称为小顶堆。由上述性质可知大顶堆的堆顶的关键字肯定是所有关键字中最大的,如下图; 小顶堆原创 2017-03-30 11:57:23 · 246 阅读 · 0 评论 -
以下哪种排序算法用到了分治思想
网易2017实习生招聘笔试题-Java开发工程师 以下哪种排序算法用到了分治思想 A 基数排序 B 快速排序 C 冒泡排序 D 插入排序答案:B知识点分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。不难发现,在分治策略中,由原创 2017-03-25 15:58:06 · 16962 阅读 · 0 评论 -
冒泡排序
每一趟:两两一次比较,交换出最大或最小放置首或尾共计N-1趟#include<stdio.h>int main(){ int i,j,t; int size=5; int a[5]={ 2,1,5,3,8 }; for(i=0;i<size-1;i++){ for(j=0;j<size-1-i;j++){原创 2017-04-03 12:52:52 · 321 阅读 · 0 评论 -
快速排序
分治思想:涉及递归,例如归并排序、堆排序、快速排序等#include<stdio.h>int Partion(int a[],int low,int high){ int i,j,t; j=low-1; for(i=low;i<=high;i++){ if(a[i]<=a[high]){ j++; t=a[i]原创 2017-04-03 17:06:13 · 444 阅读 · 0 评论 -
插入排序
温馨提示(警告):从第二个元素开始,依次与前面的元素比较后,若不符合大小条件,是将前面的元素依次往后挪,当然要把后面的比较元素先缓存起来,请和交换排序区别开来。#include<stdio.h>int main(){ int i,j,t; int size=5; int a[5]={ 2,1,5,3,8 }; for(i=1;i<size;i++原创 2017-04-03 16:07:44 · 363 阅读 · 0 评论