algorithm
liarenduxing
这个作者很懒,什么都没留下…
展开
-
二叉树的建立和遍历
二叉树是一种重要的数据结构,今天花了点时间把二叉树的递归建立和不同的遍历方法用C++实现了下面是具体的代码//测试用例abc##de#g##f### #include#includeusing namespace std;typedef struct node{ char data; struct node* lchild; struct node* rch原创 2014-03-28 13:24:37 · 586 阅读 · 0 评论 -
插入排序 温习
插入排序原理很简单,这里简单温习一下代码如下:void insertSort(int *a, int len){ for(int i = 1; i<len; i++){ int tmp = a[i]; int j; for(j = i-1 ;j>=0 && tmp < a[j];j--){ a[j+1原创 2017-06-03 15:49:24 · 178 阅读 · 0 评论 -
2016腾讯笔试题编程题
今年的笔试都是线上的,笔试题第二部分的最后一个题大意是春节小红收到很多红包,这些红包的数额中有一个数值出现的次数超过红包总是得一半,求出这个数值例如:1,2,3,4,2,2,2 这组红包中2出现的次数超过总数的一半1.简单的想法:既然超过一半,那么排序后 中间位置的一定就是这个数值,时间复杂度就是排序的时间 nlogn2.遍历一次数组,记录当前值和值出现的次数,初始次数是0原创 2015-09-07 11:40:59 · 538 阅读 · 0 评论 -
动态规划之数钱
问题:现有面值为1元,5元,10元,20,50,100六种面值的纸币,给出任意正整数元,问最少需要多少张纸币能凑成给定数额。例如正整数3,需要三个1元的纸币,结果就是最少三张。设给出的整数 为 n,对于小于n的所有数额,从小到大求出所需纸币的张数,min[1--n]min[0] = 0;min[1] = 1;min[2] = min[1] + 1 = 2min[3]原创 2015-09-01 14:55:33 · 518 阅读 · 1 评论 -
起泡排序bubblesort
cmprtimes 记录比较的次数,用了flag以后可以减少比较次数,原因是如果某一轮没有交换数据,那么序列就已经是有序的了,不需要再做任何操作。#include #include void bubbleSort(int *arr,int n){ int i = 0; int j = 0; int cmprtimes = 0; int flag; for原创 2015-04-13 17:19:15 · 399 阅读 · 0 评论 -
关于动态规划
最近比较烦,搞不懂动态规划算法,网上看一些博客,写的都不是很好理解,准备深入研究一下,等着我的成果。原创 2015-04-06 18:28:10 · 312 阅读 · 0 评论 -
每日一算法之堆和堆排序
二叉堆是一个数组,也可以看成一个完全二叉树 5 /原创 2014-04-10 16:47:31 · 483 阅读 · 0 评论 -
每日一算法之归并排序
归并排序的复杂度是O(nlogn) 性能优良,基本思想是这样的:乱序的数列,这里假设,3,1,0,0,4,8,6 。第一趟排序,两个数字一组排序后结果为{1,3}{0,0}{4,8}{6},第二趟排序,{0,0,1,3}{4,6,8}第三趟排序,{0,0,1,3,4,6,8}显然归并排序的主要操作在于合并操作(merge).ok,不多说了,关于排序的讲解网上很多,这里直接上代原创 2014-03-27 11:58:16 · 475 阅读 · 0 评论 -
每日一算法之快速排序
快速排序算法是基于比较的排序算法中效率最高的,也正因此而得名--Quick Sort快排的思想很简单,假设有无序数列:3,2,1,4,5.选取其中的任何一个作为基准元素这里我们选择第一个元素3,并存储到变量pivot中将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。在对左右两边一次重复上两步,直到每个区间元素个数为一时停止话不多说直接上代码:int partition(int *a原创 2014-03-26 23:12:28 · 512 阅读 · 0 评论 -
每日一算法之计数排序
计数排序的基本思想是:对输入序列的每一个元素X,确定小于X的元素的个数,这样就可以直接把X放到相应的位置了。需要特殊注意的地方就是有元素相同时。因为不能把相同元素放到同一位置。上代码:// CountSort//// Created by zhaowei on 14-4-1.// Copyright (c) 2014年 zhaowei. All rights reserved.原创 2014-04-01 17:55:53 · 370 阅读 · 0 评论 -
最大子段和算法 不同复杂度方法实现
没事写写算法,连连脑子。简单的实现最大子段和算法,所谓最大子段和,简单来说就是给定数列中,求连续数字和中最大的;如数列-2,7,-6,9,4,2,-4,5。最大子段和是7+-6+9+4+2+-4+5 = 17,以下给出各种策略的实现代码//// main.cpp// LSS_1//// Created by zhaowei on 1原创 2014-03-26 17:46:19 · 777 阅读 · 0 评论 -
两个整型数 的 二进制的差异位数
leetcode上的一个简单题目求两个整型数 的 二进制的差异位数例如 3(0011),5(0101)差异的位数为 0011 两位 0101解决方法,就是 C = A ^ B,再求C的二进制中1的数量int C = A ^ B;int n = 0;while (C) { n++; C = C & (C-1);}原创 2017-07-17 13:08:03 · 601 阅读 · 0 评论