算法
文章平均质量分 89
kari_zhang
Yesterday is history。Tomorrow is a mystery。But today is a gift。That is why its called the present the gift。
展开
-
内部排序算法之快速排序
快速排序采用分治思想,1.将整个区间划分两个子区间p1, p2和元素k, 使得p1区间的所有元素均小于k, p2区间的所有元素均大于或等于k(这里k成为枢轴元素),2.再对p1和p2两个区间分别重复步骤1, 如此递归3.由于步骤1是就地排序,直到最后每个区间的元素个数为1, 这样整个区间就有序了。实现步骤1的函数 int Partion(int *p, int low,原创 2013-12-08 02:25:19 · 655 阅读 · 0 评论 -
Ubuntu安装OpenGL开发环境
安装mesa相关环境安装glew 连接库 初始化运行shader程序原创 2016-05-19 19:47:31 · 6804 阅读 · 0 评论 -
管中窥探java虚拟机(二) - 亲密接触jvm的指令集
背景之前被stackframemap属性折腾了一段时间,后来好好学习了指令格式,解决了一些问题.最近又被tableswitch和lookupswitch指令绊上了.指令格式jvm指令格式通常都是 operation code + operand 操作码,操作数指令分类按功能分按操作数长度分按操作数个数分原创 2015-12-23 10:13:48 · 972 阅读 · 0 评论 -
使用A*算法寻找路径
A*算法主要是维护两张表,开放表(openList原创 2014-08-27 17:25:31 · 2757 阅读 · 0 评论 -
内部排序算法之堆排序
堆排序是利用堆的性质, 从缩小的排序空间中不断的选出堆顶元素,从而达到排序的效果。堆排序的时间复杂度主要是在不断的调整堆以满足堆的性质,其评价性能和最差情况都是O(logN), 平均性能差于快速排序,但最坏情况优于快速排序。堆可以作为具有优先级队列的实现。通常在数据量较大的时候,而需要选择出前面较大的几个元素时候, 可以考虑堆排序。堆排序的实现分为4步:1. 初始化堆, 这个过程就原创 2014-04-01 17:12:34 · 639 阅读 · 0 评论 -
利用哈夫曼编码压缩文件的小工具
huffan压缩算法在大学的教材重点讲过, 实现起来相对轻松。LZ77算法是另外一个经典的算法,由两个犹太人在70年代发明,LZ77算法的出现打破了之前由huffman算法一人独大的局面。原创 2014-04-30 14:06:35 · 2936 阅读 · 3 评论 -
字符串操作之删除指定字符
对于字符串,通常还有一个操作就是删除指定字符。在一些面向对象的语言如C++, JAVA中,内部已经实现。自己动手用C语言也尝试实现该操作。一般思路是,将待删除的字符全部移到串的尾部, 最后从字符串尾部倒数,将最后一个待删除的字符替换为字符串结束标识'\0'。为了保证一次遍历串就完成操作, 我们需要用两个变量来记录当前遍历的位置和已处理串的末尾位置,分别记为p, q. 开始另p = 0, q原创 2014-02-12 16:08:26 · 2924 阅读 · 0 评论 -
大数字的加减乘除四则运算
有时候对整数做四则运算时, 发现数字过大,超出了通常编程语言提供类型的最大范围,自己动手总结了一下对这些数字进行运算的技巧。先实现加法和乘法。2个进制相同的数字的加法运算有这样的规律:1. M位的加数加上N位的加数,和的位数最大为 MAX(M, N) + 12. 低位向高位的进位必然小于2在乘法中,M位的数乘以N位的数,乘积的位数最大为 M+N明白了这两个规律,可以简化代原创 2014-02-12 14:11:05 · 1855 阅读 · 0 评论 -
内部排序算法之简单插入排序
先贴一段选择排序的代码:void insertion_sort(int* p, int n){ int i, k, j; for(i=1; i<n; ++i) { k = p[i]; j = i-1; while(j>=0 && p[j] > p[原创 2013-12-11 18:00:55 · 699 阅读 · 2 评论 -
内部排序算法之希尔排序
希尔排序是在简单插入排序上做了该进。待排序系列长度记为N,增量d一般取从N/2, N/4, N/8到1的序列。希尔增量的选取决定了排序的效率。将待排序系列中,元素下标间距为d的所有元素分为一组, 对每组进行简单插入排序。当d减少到等于1使,最后做一次简单插入排序。先实现一个不考虑效率最简单版的希尔排序int shell_sort(int *p, int n){ int k原创 2013-12-13 09:50:22 · 669 阅读 · 0 评论 -
内部排序算法之冒泡排序
冒泡排序虽然简单,但是之前没有细细体会过程,经常写错循环条件。做个笔记,以防遗忘。将所有元素的两两比较称为一趟冒泡过程。首先,明白这样的事实:1. N个元素, 两两比较只需N-1次就可以选出最大值。2. N个元素, 第1趟冒泡, 两两比较N-1次,选出了最大的元素。第2趟冒泡,需要在N-1个元素中选出最大的元素,需要两两比较N-2次。由此推出第k趟需要比较N-1-K次。冒泡排序原创 2013-12-06 00:08:25 · 886 阅读 · 1 评论 -
从零开始,自己动手写Java虚拟机
从零开始,自己动手写Java虚拟机自己动手写一个Java虚拟机java虚拟机的作用java虚拟机的组成java虚拟机的开发java虚拟机的测试原创 2017-12-19 23:35:59 · 12475 阅读 · 3 评论