![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程
文章平均质量分 76
童话bye
请看我漂亮的坚持
展开
-
二叉树的遍历的迭代和递归实现方式
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序转载 2015-06-19 15:37:35 · 554 阅读 · 0 评论 -
linux下创建线程
创建线程函数总结:包含头文件信息 pthread.h线程创建:int pthread_create(pthread_t *thread,pthread_attr_t *attr,void*(*start_routine)(void *),void *arg);pthread_t *thread 使用该指针进行引用创建的线程pthread_attr_t *attr 线程属原创 2015-09-08 13:56:33 · 365 阅读 · 0 评论 -
回溯法——列举多维向量
1.回溯法概述 对于单维或者低维向量进行搜索时,可以非常简单的使用循环来遍历。但是随着维度的增加要怎么进行遍历呢?没错,使用回溯法可以对多维向量进行exhaustive searching。 它的通用编程模式: backtrack( [v1,...,vn] ) { if ( [v1,...,vn] is well-generated )原创 2015-07-06 09:53:50 · 488 阅读 · 0 评论 -
Leetcode常用五大算法思想
算法目录(?)[-]分治算法动态规划贪心算法回溯法分支限界法分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算转载 2015-06-14 00:18:25 · 2688 阅读 · 0 评论 -
和为固定值的所有序列
1.问题描述 给定一个随意的向量,找到和为固定值的所有不同的序列。 例如:向量10,1,2,7,6,1,5 和为8 应该得到序列: [1,7] [1,2,5] [2,6] [1,1,6] 要求:序列中所有值都是整数,输出元素是从小到大排序的。输出的集合不能有重复的;2.解法 解析:1:因为要求输出是排序的,那么可以首先对序原创 2015-07-01 12:51:42 · 494 阅读 · 0 评论 -
王垠:完全用 GNU/Linux 工作
完全用 GNU/Linux 工作理解 GNU/Linux注:本文是清华“牛仔”王垠的“成名作”,在网上引起很大的争议。对他崇拜地五体投地者有,对他嗤之以鼻者也有,总之成了一年多以前Linux 爱好者的圈子里的一个很有意思的现象。之后他对这篇文章进行了很大的修改,已经没有了原来那种意气风发。现存的版本如白开水一般无味,请参 见:http://learn.tsinghua.edu.cn/hom转载 2015-06-29 20:17:55 · 799 阅读 · 0 评论 -
KMP算法解析
1.算法解决问题描述 字符串匹配问题,即在长的字符串序列中去匹配短的字符串。2.算法解析 简单的字符串匹配是通过对匹配字符串平移一位,进行逐个比较。这样的话算法复杂度达到o(n*m).KMP算法是首先得出匹配字符串的特征,这样当两个不匹配时,不用只是平移一位了。极大的减少复杂度。它可以达到o(n+m)。KMP算法主要的是求覆盖函数(overlay_f原创 2015-06-29 18:42:47 · 514 阅读 · 0 评论 -
链表求和问题(add two numbers)
一道leetCode编程题:1.问题描述 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numb原创 2015-06-08 16:13:32 · 420 阅读 · 0 评论 -
最长上升子序列LIS算法实现
转自:点击打开链接最长上升子序列LIS算法实现 最长上升子序列问题是各类信息学竞赛中的常见题型,也常常用来做介绍动态规划算法的引例,笔者接下来将会对POJ上出现过的这类题目做一个总结,并介绍解决LIS问题的两个常用算法(n^2)和(nlogn).问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7....an,求它的一个子序列(设为s1,s2,...sn),使得这个子序列满转载 2015-06-28 16:11:37 · 344 阅读 · 0 评论 -
二分查找
对排序序列进行查找,可以进行二分查找,时间复杂度为O(log(n)). 原理很简单,但是能正确无误的写出其代码,也并不容易。主要需要注意的是:循环条件的判断和右端标记的下次迭代。 当left<=right; right=middle-1; 当leftint search(int array[], int n, int v){ int left, right, middle;原创 2015-06-27 14:21:54 · 319 阅读 · 0 评论 -
【算法学习】AVL平衡二叉搜索树原理及各项操作编程实现(C++)
转自:http://blog.csdn.net/xiajun07061225/article/details/8292505AVLTree即(Adelson-Velskii-Landis Tree),是加了额外条件的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(nLogn)。平衡条件是任何节点的左右子树的高度相差不超过1.在下面的代码中,编程实现了AVL树的建立、查找转载 2015-06-26 16:25:10 · 452 阅读 · 0 评论 -
二叉搜素树基本操作
**一 序言** 线性结构的数据结构有数组和链表,他俩各有自己的优势所在。非线性结构的数据结构可以综合各自的有点,而非线性数据结构中非常重要的是二叉树了,搜素二叉树又是其中基本的结构。 在平时学习当中,总感觉没有深刻的掌握,似是而非,于是决定再重新看一边算法导论关于BST。做个笔记。二 基本操作2.1 BST查询 递归实现TREE-SEARCH(x,k)if x==NIL原创 2015-06-26 13:16:23 · 430 阅读 · 0 评论 -
Perfect Squares
一道编程题:描述:Given a positive integer n, find the least number of perfect square numbers (for example,1, 4, 9, 16, ...) which sum to n.For example, given n = 12, return 3 because12 = 4 + 4 + 4;原创 2015-09-13 21:33:53 · 332 阅读 · 0 评论