- 博客(5)
- 资源 (9)
- 收藏
- 关注
原创 在一个数组中查找最大的K个元素或者最小的K个元素
面试中经常会遇到查找最大的K个元素或者最小的K个元素的问题。如果是查找最大的K个元素,就用小根堆,如果当前元素比堆的根都元素大,那么一定要放到堆里来,用当前元素替换根元素(因为根的元素是最小的),然后调整堆。查找最小的K个元素用大根堆同理。 上代码: #include using namespace std; //在数组arr[1..size]中,使得以i为根的子堆保持大根堆的
2013-04-27 11:30:41 1527
原创 用queue实现的基数排序RadixSort
代码是用queue实现的基数排序,其中arrlength表示数组长度,maxbit表示arr数组中int型整数的最大位数,如果maxbit=3,表示最大为3位数,即不超过999 /************************************** /* /* 函数名 : Radix Sort /* **********************************
2013-04-26 23:17:44 1257
原创 堆和堆排序
堆,是一棵完全二叉树,根的值大于左右子树中所有结点的值,左右子树也是堆,除此之外,对其它元素之间的大小关系(如左右子树之间元素大小关系)没有要求。这是大根堆,如果把“大于”换成“小于”,就是小根堆,这里都以大根堆为例。 由于堆是完全二叉树,所以可以用数组来模拟,在数据结构上算是比较简单。用数组模拟二叉树(当然也包括堆)的话,如果根节点的下标为0的话,则对于每个结点i,其左孩子下标为2*i+1;其
2013-04-26 19:55:14 1123
原创 笔试题目“翻转字符串”的实现
最近找实习,要面试各种公司,据说这题在笔试或者面试当中,出现的频率非常高 //写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。 我自己写了个实现: /* *将字符串翻转 *翻转方式如下:“I am a student”反转成“student a am I” * *方法: *先反转整个字符串,然后
2013-04-23 22:56:21 5151
原创 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
昨晚准备今天的腾讯实习生的面试,就把常用的排序算法又写了一遍,放这儿吧,以后没事看看。 Sort.h #ifndef SORT_H #define SORT_H void insertSort(int x[], int n); void shellSort(int x[], int n); void bubbleSort(int x[], int n); void selec
2013-04-23 16:14:13 1627 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人