
算法
文章平均质量分 79
luckystar_sai
机会总是垂青有准备的人
展开
-
统计一个数中含有1的个数的不同方法
#include#includeusing namespace std;int count_1(int num){int count = 0;int re = 0;int div = 0;if (num div = num;do{re = div % 2;if (re == 1)count++;div = div / 2;原创 2017-08-01 21:39:03 · 1048 阅读 · 0 评论 -
把一个数组排序为最小的值
#include#include#include#include#includeusing namespace std;static bool cmp(int a, int b)//这里的 cmp函数sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局原创 2017-09-04 17:27:53 · 222 阅读 · 0 评论 -
查找一个有序数组中某一数值出现的次数
#include#include#include#include#includeusing namespace std;int Gfindf(vectordata, int k){ if (data.empty())return -1; int len = data.size(); int begin = 0; int end = len - 1; //int mid =原创 2017-08-29 15:57:54 · 1595 阅读 · 0 评论 -
约瑟夫环问题
1、常规解法,用list 容器:#include#includeusing namespace std;int lastremaining(list q, int m){int len = q.size();list::iterator current = q.begin();while (q.size()>1){for (int i = 1; i原创 2017-08-31 16:54:02 · 221 阅读 · 0 评论 -
堆排序
1、大根堆与小根堆的区别。堆是经过排序的完全二叉树。根节点的关键字即堆顶是所有节点中最大的是大根堆,反之是最小的,就是小根堆。堆排序思想:1、大根堆排序:首先从第一个非叶子节点开始调整,帅选出最大的关键字,放到堆顶。其实就是建堆的一个过程。其次,把堆顶的元素和二叉树中最后一个节点交换,如果不满足最大堆的特点继续调整,帅选出第二大的关键字,然后再将堆顶元素和二叉树中最后一个节点交原创 2018-01-25 17:38:59 · 191 阅读 · 0 评论 -
常见的排序算法分析
1、冒泡排序。冒泡排序执行的时间取决于比较的趟数,在最好的情况下,待排序的记录是正序,算法只执行一趟,进行了n-1次关键码的比较,不需要移动记录,时间复杂度是O(N);最坏的情况下,是倒序,每次比较只有一个最大的记录被交换到最终的位置,故算法执行了n-1趟,每次比较的次数是n-i,关键码比较的次数是n(n-1)/2.。平均情况的时间复杂度与最坏的情况是同一个数量级的。空间复杂度o(1). 它是稳...原创 2018-03-10 16:56:44 · 507 阅读 · 0 评论 -
输出旋转数组中最小的元素
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:看成是两个有序序列。class Solution {public: int minNumberInRotate...原创 2018-03-13 15:08:42 · 267 阅读 · 0 评论 -
递归思想斐波那契数列变形
青蛙跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloor(int number) { int n=number; int res=0; if(n==1||n==2) { res=n; ...原创 2018-03-13 16:08:06 · 318 阅读 · 0 评论 -
调整数组中的顺序使得奇数位于偶数的前面
1、 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分 设置两个指针,一个指向奇数,一个指向偶数。让第一个指针指向数组的头部,第二个指向数组 的尾部,第一个指针如果指向的数值是偶数,第二个如果指向的是奇数,而且两个指针满足p1<p2的话,则交换。void ReorderOddEven(int *pdata,int ...原创 2018-03-14 14:06:35 · 328 阅读 · 0 评论