
算法
文章平均质量分 63
szfhy
这个作者很懒,什么都没留下…
展开
-
Opencv实现纵横比保持的图像缩放
之前实现过C实现纵横比保持的RGB图像缩放,其实计算效率是不高的。opencv的好多实现都是自带mmx, sse加速的。所以就来研究一下如何用opencv来实现纵横比保持的图像缩放。查看了一下opencv resize函数的详细定义:函数原型:参数说明:,输入图像,Mat类型即可;,输出图像,当其非零时,有着dsize(第三个参数)的尺寸或者有src.size()计算出来;,输出图像的大小。如果它等于0,由下式计算: ,沿水平轴的缩放系数,默认值为0,且等于0时,由下式计算:原创 2022-06-04 21:38:19 · 1082 阅读 · 0 评论 -
内部排序-交换式排序-选择排序
选择排序第一步:选择,既按照指定的规则选择出一个元素第二部: 将选择出的元素和其他元素交换,在剩下的元素中循环进行。#include void select_sort(int *list, int len);int main(int argc, char* argv[]){ int list[20] = {0}; int i, index; int list1原创 2015-11-24 21:15:59 · 462 阅读 · 0 评论 -
内部排序-插入排序-希尔排序
直接上code吧#include "stdafx.h"#include #include #include void shell_sort(int *list, int len);int _tmain(int argc, _TCHAR* argv[]){ int list[] = { 3, 87, 4, 3, 5, 65, 88, 92, 1, 32, 11, 44, 36,原创 2015-11-26 17:19:59 · 524 阅读 · 0 评论 -
内部排序-插入排序-二叉树排序法
思想主要是:利用要排序的数据构造二叉树,然后再中序遍历二叉树即可。方法简单,但是简历的二叉树歪斜程度较大。时间复杂度O(nlogn), 受树的高度影响。空间复杂度为O(n), 比较耗费空间。#include "stdafx.h"#include void binary_tree(int *btree, int *list, int len){ int i; in原创 2015-11-26 21:43:55 · 902 阅读 · 1 评论 -
AMR 文件解析及编解码流程
CONTENT: * AMR简介 * AMR 话音质量评定 * AMR 文件结构解析 * AMR 帧结构解析 * AMR 帧读取算法 * AMR 解码原理及流程 * AMR 模式选择自适应机制 一、转载 2015-12-30 16:11:58 · 7410 阅读 · 0 评论 -
内部排序-堆排序
堆排序方法主要是循环的将要排序的数据构造成堆,然后将堆顶输出循环利用上述方法,将剩下的数据继续构造成堆。该方法的时间复杂度为nlogn. 空间复杂度为O(1);#include void dump_heap(int *list, int len){ int i = 0; for (i = 1; i <= len; i++) printf("%d ",原创 2015-12-15 21:38:26 · 6340 阅读 · 0 评论 -
外部排序-合并排序
定义省略:code:#include void MergeTwo(int *src, int *dst, int left, int middle, int n){ int i, j, k, t; i = left; k = left; j = middle + 1; while ( (i <= middle) && (j <= n) ) { if原创 2015-11-29 17:32:53 · 720 阅读 · 0 评论 -
AMR在IP域中的编码(rfc3267,4867)
1 AMR编码介绍AMR编码是一种自适应多速率编码,根据传输信道的实际情况,调整编码模式、速率和纠错码位数来保证语音质量,在数据压缩和容错上面取得平衡。一般语音质量越高抗干扰能力越弱。在GSM网络,基站、基站控制器可根据网络质量和信号质量情况动态调整语音编码模式以提高不同网络状况下的语音质量。现在手机终端基本上都支持AMR编码,Nokia从2004年开始提供支持AMR的终端,目前所有的新型号终转载 2016-01-21 09:27:41 · 3641 阅读 · 0 评论 -
AMR 文件解析及编解码流程
src:http://blog.youkuaiyun.com/wlsfling/article/details/5875928CONTENT: * AMR简介 * AMR 话音质量评定 * AMR 文件结构解析 * AMR 帧结构解析 * AMR 帧读取算法转载 2016-01-21 09:31:27 · 1444 阅读 · 0 评论 -
二叉树建立/遍历/复制/映像/节点删除/释放空间
闲来无事,想起来的当初的二叉树的操作,编码回忆一下;(1)二叉树的建立(2)前序 中序 后序遍历二叉树(3)复制二叉树(4)将二叉树左右对换,简称映像(5)删除二叉树中的节点(6)释放二叉树#include #include struct tree_type{ struct tree_type *left; int data; struct tree_原创 2015-12-20 18:24:10 · 6536 阅读 · 0 评论 -
费氏查找算法
费氏查找算法,利用斐波那契数列的思想,逐步修改要查找的区间。相对于折半查找算法来说,建立斐波那契数列不需要用除法。效率要高。在初始阶段搜索相对较快,但是在后半程收敛比较慢。在考虑是否可以将该方法和其他搜索算法融合一下,得到更快的搜索算法。#include #include int Fib(int n){ if (n <= 1) return 1;原创 2015-12-20 21:10:15 · 6679 阅读 · 0 评论 -
ffmpeg-libopencore-amr 语音编码
AMR(Adaptive Multi-rate),自适应多速率语音编码器,主要用于移动设备的音频(GSM, 3G wcdma),压缩比大,但相对其他的音频压缩格式音质差,多用于人声通话。AMR又分为两种,一 种是AMR-NB(AMR-NarrowBind)窄频,语音带宽范围:300-3700Hz,8KHz采样频率;支持的输出bitrate有(4.75k,5.15k, 5.9k, 6.7k, 7原创 2016-01-22 11:20:26 · 11909 阅读 · 2 评论 -
线性插补法查找
利用线性插值的方法找到要比较元素的位置。写段code吧,暂时没有发现这种方法有啥优点。#include #include #include int find_best_mid(int *list, int low, int high, int key){ int gap; int n1, n2, n3; gap = ceil(sqrt((float)high - (原创 2015-12-21 21:05:09 · 8678 阅读 · 0 评论 -
哈希查找
记录个demo吧。建立hash表和search一定要用同一的hash算法。#include #include #define Max 6#define HashMax 5int data[Max] = {12, 160, 219, 522, 725, 9997};int HashTable[HashMax] = {0};int counter = 1;stru原创 2015-12-21 22:50:30 · 6203 阅读 · 0 评论 -
人脸检测特征-haar特征
哈尔特征原创 2015-11-30 18:48:25 · 7429 阅读 · 0 评论 -
人脸检测特征-LBP特征
哈尔特的基础上产生的LBP特征原创 2015-11-30 18:49:31 · 8975 阅读 · 0 评论 -
利用Adaboost和Haar特征进行人脸检测
利用哈尔和LBP特征,训练分类器,然后进行人脸检测原创 2015-11-30 18:51:20 · 8031 阅读 · 0 评论 -
利用Adaboost和LBP特征进行人脸检测
LBP的基础知识已经简单的介绍过了。原创 2015-12-06 22:02:11 · 1764 阅读 · 0 评论 -
图转换为树-最小生成树
利用prims和kruskal两种方法实现最小生成树。直接上code吧。记录下#include #include #define MAX 10#define VertexNum 5struct List{ int v1; int v2; int weight; int marked; struct List *next;};typedef struct L原创 2015-12-27 21:47:35 · 10173 阅读 · 0 评论 -
图遍历-深度优先
深度优先遍历最主要的思想是利用了 栈的概念。利用栈来存储已经遍历过的节点。#include #include #define VertexNum 9struct DFS_Node{ int v; struct DFS_Node *next;};typedef struct DFS_Node *Graph;struct DFS_Node DFS_Head[V原创 2015-12-27 21:43:06 · 6576 阅读 · 0 评论 -
图遍历-广度优先
广度优先遍历最主要的是 利用队列的数据结构。#include #include #define VertexNum 9struct BFS_Node{ int v; struct BFS_Node *next;};typedef struct BFS_Node *Graph;struct BFS_Node BFS_Head[VertexNum];int g原创 2015-12-27 21:40:57 · 6155 阅读 · 0 评论 -
输出一个句子中最长的单词
//输出一个句子中最长的单词,如果两个单词长度相等,输出后出现的单词#include "stdafx.h"#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){ char str[100] = ""; printf("please input a sentece:"); gets(str)原创 2015-11-03 17:58:19 · 4934 阅读 · 1 评论 -
华为2014校园招聘的机试题目--字符串压缩
[html] view plaincopy难得有空,玩玩今年的面试题:p> p>p>9月5日,华为2014校园招聘的机试题目 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字原创 2015-11-03 18:00:52 · 6221 阅读 · 0 评论 -
静态变量详解
先看一个程序吧。#include "stdafx.h"#include "stdio.h"#include "iostream.h"int fun1(){ static int a1 = 5; a1++; return a1;}int fun2(){ static int a1 = 5; int a2 = 5; a2++; return a2;}int main(i原创 2015-11-03 17:59:27 · 6592 阅读 · 0 评论 -
将二进制字符串转换为二进制数据
例如将字符串“01000001”转为0x41, 如果字符串不是8的整数倍,二进制地位补0。#include #include void str_bin_to_u8(const char *str, int len, unsigned char *data){ int i = 0; unsigned char and_bit[] = {0x7F, 0xBF, 0xDF, 0xEF, 0x原创 2015-11-07 11:34:22 · 9547 阅读 · 0 评论 -
快速判断两个矩形是否相交
两个矩形之间的位置关系无外乎图中的5中case.难道我们要每个case都要判断一边,然后决定是否相交?其实是有通用方法的。如果两个矩形相交,那么矩形A B的中心点和矩形的边长是有一定关系的。Case 2345中,两个中心点间的距离肯定小于AB边长和的一半。Case 1中就像等了。设A[x01,y01,x02,y02] B[x11,y11,x12原创 2015-11-09 16:26:11 · 43742 阅读 · 10 评论 -
内部排序-交换式排序-快速排序
快速排序主要是利用了递归的思想,才用分治法,通过一次排序将待排序的数据分割成独立的两部分,其中一部分都比关键字(哨兵)小,另一部分都比关键字(哨兵)大,然后再对这些独立的部分递归使用上述方法,空间复杂度低,速度相对来说快,时间复杂度为nlogn. 前面我们分析过:如果某个算法将问题分解成更小的子问题,独立地解决各个子问题,最后将结果综合起来比较。则其时间复杂度为Ologn.在该算法中常将第一个原创 2015-10-28 22:09:28 · 6574 阅读 · 0 评论 -
算法性能评估-时间复杂度
时间复杂度是用来评估算法性能的一个重要指标,有以下对应的关系。1 (1) 1 表示常数。 程序执行的最大次数是可以估计到的,也就是说是一个常数。(2) log(n) 如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规模缩减成几分之一,一般就会出现这样的运行时间函数。在我们所关心的范围原创 2015-10-28 22:02:10 · 8132 阅读 · 0 评论 -
排序的特性
稳定性排序的稳定性是指:排序之后的,能使值相同的数据,保持原顺序中的相对位置。如果满足上述条件则称为一个稳定性的排序,否则为不稳定性排序。比如数据如下 27 18 32 4027 18 32 40(1) 38 88 75 40(2) 100相同数据排序之后 40(1)在40(2)之前则为稳定性的排序,否则为不稳定排序。内部排序和外部排序内部排序:将要进行排序的全部数据放原创 2015-10-28 22:04:37 · 6452 阅读 · 0 评论 -
内部排序-交换式排序-冒泡排序法
冒泡排序法,很简单的一个方法,将相邻的两个数据加以比较,并按照规则交换位置,重复此动作,直到比较到最后一个值结束。该方法的优点是:若数据已经有部分排好序,则使用该方法可以很快的完成排序。缺点:该方法会反复扫描数据,比较相邻的两个数据,速度不快并且也没有效率。该方法是稳定性排序方法。空间复杂度是O(1), 时间复杂度是O(n^2)[cpp] view plaincop原创 2015-10-28 22:06:59 · 6332 阅读 · 0 评论 -
运行第一个python程序
chmod +x myfile.py使文件具有可执行权限python文件第一行写:#!/usr/bin/python 表示python可执行程序的绝对路径。如果不知道绝对路径,或者为了移植方便,写成下面的方式比较好#!/usr/bin/env python从所有环境变量中寻找可执行程序执行python文件Python myfile.py有时候python命令需要填写绝原创 2015-10-28 22:11:41 · 590 阅读 · 0 评论 -
打印数字的二进制 利用数组输出大数据
#include "stdafx.h"#include #include "math.h"using namespace std;void printBinary(const unsigned char val) { for(int i = 7; i >= 0; i--) if(val & (1 std::cout原创 2015-11-03 17:29:57 · 6828 阅读 · 0 评论 -
内部排序-插入式排序
将要排序的元素通过插入的方式找到其适当的位置来进行排序。直接上code吧int g_counter1 = 0;int g_counter2 = 0;void insert_sort(int *list, int len){ int i, j, k; int temp; for(i = 1; i < len; i++) { temp = list[i]; for (j原创 2015-11-25 20:30:42 · 715 阅读 · 0 评论 -
图搜索-dijkstra
利用邻接矩阵来演示dijkstra直接上code吧#include #include #define MAX 1000#define VertexNum 7#define EdgeNum 9int g_graph[VertexNum][VertexNum] = {0};int g_edge[EdgeNum][3] = { {1, 2, 6}, {1, 3, 3}, {原创 2015-12-27 21:36:56 · 6115 阅读 · 0 评论