简单算法
文章平均质量分 73
流云易采
硕士
展开
-
将字符串转化为整数问题(C++)
1.将字符串转化为整数问题(C++)仿照atoi实现代码:// 仿照atoi函数实现字符串转化为整形数据问题//#include "stdafx.h"enum MyEnum{ eValid = 0,//合法 unValid //不合法};int mState = eValid;//定义全局变量,输入非法时设置该全局变量;原创 2015-03-06 16:58:25 · 1983 阅读 · 0 评论 -
排序算法之插入排序(Java)及堆排序
1.直接插入排序《算法导论》P10,《数据结构》P265向已经排好序的数组a[1..j-1]插入a[j],进行一趟循环遍历。插入排序的基本操作是在一个有序表进行查找和插入。每一趟插入排序从后往前进行比较,便于数组中元素的向后移动。空间复杂度:O(1)(当使用swap交换时,可实现原址)时间复杂度:(n^2)/4即O(n^2)2.拓展1)折半查找排原创 2015-03-16 15:16:15 · 1236 阅读 · 0 评论 -
二叉树简单汇总
一、二叉树常见算法二、二叉搜索树(BST,也称二叉查找树): 1、定义: 是指一棵空树或者具有下列性质的二叉树: 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。2、性质: 构建一个有n个不同关键字的二查搜索树的期望高度为h = O(lg原创 2016-05-05 16:02:50 · 637 阅读 · 0 评论 -
简单算法汇总
零、全排列问题(Permutation) 问题描述:即给定{1,2,3},返回123,132,213,231,312,321 《Permutation》 1)无顺序的全排列问题: 将序列P(n) = {1….. n}的全排列问题看成P(n)={1,P(n-1)} + {2,P(n-1)}…..的问题,即确定第一个元素的值为1,然后和剩下n-1个元素的全排列结果组合到一起;然后再将1和剩下的每原创 2016-04-19 21:19:00 · 3973 阅读 · 2 评论 -
归并排序及统计数组逆序对
1.归并排序《算法导论》P19参考网址:白话经典算法系列之五 归并排序的实现 - MoreWindows Blog -博客频道 - CSDN.NEThttp://blog.csdn.net/morewindows/article/details/6678165#include "stdafx.h"#i原创 2015-03-10 09:56:50 · 1069 阅读 · 0 评论 -
排序算法之快速排序(Java)
//快速排序public class Quick_Sort { // 排序的主要算法 private int Partition(int[] data, int start, int end) { int mid_data = data[end];// 选取最后最个数作为中间值哨兵,从开始进行遍历,每个数与之比较 int index = start; // 记录比哨兵小的数字在原创 2015-03-15 11:02:06 · 1291 阅读 · 0 评论 -
二叉树三种遍历方式非递归实现
1.中序遍历:应为输出的子树根的关键字位于其左子树关键字值和右子树的关键字值之间;同理,先序后序遍历。1.先序遍历非递归算法#define maxsize 100typedef struct{ Bitree Elem[maxsize]; int top;}SqStack;void PreOrderUnrec(Bitree t){ SqStack s;转载 2014-11-03 20:50:33 · 809 阅读 · 0 评论 -
求数组的最大值最小值
算法数组中的最大值和最小值方法1:遍历两次求出最大值最小值 ,时间复杂度N*2 方法2:相邻两个数分为一组比较,大的放在偶数位,小的放到奇数位,然后在偶数位上找到最大值,在奇数位上找到最小值N*1.5方法3:定义两个变量Max,Min值,相邻两个数分为一组,比较出最大值和最小值,最大值和Max比较,是否大于Max,如果大于赋值于Max,最小值和Min比较,是否小于Min,如果小于赋转载 2014-12-19 10:50:09 · 1975 阅读 · 0 评论 -
剑指offer学习笔记——第三章 高质量的代码
1.定义链表ListNode与BinaryTreeNode//链表struct ListNode{ int m_nValue; ListNode* m_pNext;}; //二叉树struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLe原创 2014-12-22 09:25:30 · 801 阅读 · 0 评论 -
二叉树的三种遍历方法
/******************定义二叉树**************************///链式存储struct BinaryTreeNode{ int mValue; BinaryTreeNode* mLeft; BinaryTreeNode* mRight;};//顺序存储struct BinaryTreeNode{ int data[MAX_SIZE];原创 2014-12-25 14:53:16 · 799 阅读 · 0 评论 -
剑指Offer——斐波那契数列
斐波那契数列《剑指Offer》P73可用以实现青蛙跳台阶问题,线段问题等//较差的实现方式一,里面包涵了很多重复计算long long Fibonacci::Fibonacci_fun1(int n){ if (n <= 0) { return 0; } if (n == 1) { return 1; } return Fibonacci原创 2015-03-10 16:55:23 · 1069 阅读 · 0 评论 -
数组中出现次数超过一半的数字
《剑指Offer》P163题目:找出数组中一个出现次数超过整个数组长度一般的数字 解法一:将原问题转化为求数组的中位数,采用快速排序的思想,每一次Partition取末位为哨兵,遍历将小于、大于哨兵的数分别移至哨兵左右,最后返回哨兵在处理后的数组中的位置。不断缩小要处理的数组的长度大小,最终确定返回值为数组长度一半的元素,即为中位数。 解法二:由原创 2015-03-17 09:15:58 · 1079 阅读 · 0 评论 -
二叉搜索树(Java)
/*****************搜索二叉树*********************///《算法导论》P161 /*构建一个有n个不同关键字的二查搜索树的期望高度为h = O(lgn); 下述所有查找等操作的时间复杂度为O(h) */ /******定义搜索二叉树*****///对于任一节点x,满足其左子树上的节点key都不大于x.key//原创 2015-03-29 10:23:48 · 1248 阅读 · 0 评论 -
二叉树三种遍历递归及非递归实现(Java)
import java.util.Stack;//二叉树三种遍历递归及非递归实现(Java)public class Traverse { /******************定义二叉树**************************/ private final int MAX_SIZE = 10; //链式存储 public static class BinaryTre原创 2015-03-19 15:27:37 · 1997 阅读 · 1 评论 -
数字在数组中出现一次的情况
1.数字在数组中出现一次的情况(《剑指Offer》P211,《编程之美》P38)(1)问题描述:一个数组中,一个或两个数字只出现了一次,其他数字都出现了两次,找到这两个数字。(2)解决思路解法一:遍历列表,使用哈希表记录下每个数字出现的次数,每次遇见一个新的数字,则在哈希表中增加一个元素;遇见相同的数字,即该数字出现两次,则从哈希表中将该原创 2015-03-04 22:02:51 · 1002 阅读 · 0 评论 -
Baidu笔试-01序列排序的交换次数
问题描述:问题分析:解法一:设置双指针,start,end;当data[start]=‘1’,data[end]=’0’时,表示需要进行交换,次数加1;否则data[end]=’1’则前移end指针;data[start]=‘0’则后移start指针;该算法仅需遍历一次解法二:先遍历一次计算字符数组中0的个数zero,再计算前zero个字符中1的个数,即是要交换到后面的原创 2015-04-20 14:37:23 · 1606 阅读 · 0 评论 -
模式匹配KMP算法(Java)
/********查找匹配字符串**********///最原始、复杂度最高的做法//返回childstr在mumstr中第pos个字符之后的位置,如果不存在,则返回0public int FindStr(String mumstr, String childstr, int pos){ //省去参数有效性判断 if((childstr.length() > mumstr.leng原创 2015-03-25 15:47:18 · 1264 阅读 · 0 评论 -
排序算法之冒泡排序(Java)
冒泡排序即每次遍历。相邻数字间进行比较,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置;算法关键要点在于确定每次循环的边界;后面两种算法则是对冒泡排序一定程度上的改良,但相对于其他排序算法,冒泡排序性能依然较差。//冒泡排序public class Bubble_Sort { //最原始的解法 public void bubble_sort1(int[]原创 2015-03-15 09:38:08 · 1505 阅读 · 0 评论