算法
文章平均质量分 50
大风_Blog
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划初步
动态规划之钢条切割动态规划的设计1. 刻画最优解的结构特征2. 递归地定义最优解的值3. 计算最优解的值,通常采用自底向上的方法4. 利用计算的信息构造一个最优解钢条切割不同长度的的钢条,价格不同,切割钢条使价格最高:长度与价格相关表如下:长度i1234原创 2014-03-28 21:06:56 · 750 阅读 · 0 评论 -
七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现(14/8/3更新加入二分排序)
冒泡排序思路:就是每次将最大或最小的元素放到数组的最后,so easy!时间复杂度为(O(n^2))public class BubbleSort { public static void bubbleSort(int[] a) { for (int j = 1; j < a.length; j++) { for (int i = 0; i < a.length - j; i+原创 2014-04-30 18:46:46 · 10155 阅读 · 0 评论 -
生产者与消费者
1、生产者与消费者问题的描述一个或者多个生产者,一个或者多个消费者。生产者在一条生产线不停地生产产品,消费者们不停地消费产品,需要注意的是这里的生产线属于临界资源(Critical Source).当生产线的产品生产满之后,生产者不能再往生产线生产产品,当生产线为空时消费者不能往生产线消费产品。生产线里面有两个方法,生产和消费,这两个方法都临界区(Criti原创 2014-08-03 15:20:43 · 1511 阅读 · 0 评论 -
随机数生成算法(伪随机数)
什么是伪随机数,它和随机数的区别伪随机就是一个过程看似随机的,但实际还不是随机的。伪随机数都是有一定的周期性的,如使用24小时里面的一个小时,这个就是伪随机数,或者三角函数的一个角度的三角函数值,因为时有周期性所以是伪随机的。记住一点事要做到真正的随机有:抛硬币,热噪讯号、量子力学的效应、放射性元素的衰退辐射,或使用无法预测的现象等。计算机里面的随机数主要还是用伪随机数来实现的,例如以原创 2014-06-04 22:25:48 · 3785 阅读 · 0 评论 -
页面置换算法总结-FIFO-LRU-OPT
FIFO(先进先出算法)直接看图,以后再错剁手原创 2014-04-13 01:20:55 · 3929 阅读 · 1 评论 -
Unicode与utf-8的转换
Unicode符号范围 | UTF-8编码方式(十六进制) | (二进制)--------------------+---------------------------------------------0000 0000-0000 007F | 0xxxxxxx0000 0080-0000 07FF | 110xxxxx 10xxxxxx0000 0800-0000 FFF原创 2014-04-13 00:05:13 · 887 阅读 · 0 评论 -
前缀式(波兰式)与后缀式(逆波兰式)求解表达式的值,中缀式(一般算数表达式不做讨论)
波兰式表达“三加四”时,前缀记法写作“+ 3 4”,而不是“3 + 4”。在复杂的表达式中,操作符仍然在操作数的前面,但操作数可能是包含操作符的平凡表达式。例如,如下的中缀表达式:(5 − 6) * 7写作前缀表示法时是:*(− 5 6) 7或省略括号:* − 5 6 7由于简单的算术运算符都是二元的,该前缀表达式无需括号,且原创 2014-04-25 01:22:32 · 1767 阅读 · 0 评论 -
求最大子数组的和,以及求该最大子数组的起始位置和末尾位置
问题描述:一个数组,长度为N,数组元素有负有正,如{-1, 4, 6, -3, 7, -3, -3, 9};我们可以清楚的知道最大的子数组应该是4到9,也就是下标1到下标7,和为17。求解思路:第一种方法:我们可以用定义1、两个数ThisSum和MaxSum来记录当前数组的和,以及数组的最大和。2、我们可以用两个for循环来来遍历数组,每一次求出子数组的最大和,每个子数组从原创 2014-05-08 22:04:50 · 2744 阅读 · 0 评论 -
关于哈希表
什么是哈希表根据设定的哈希函数H(key)和处理冲突的方法,将一组数据映像到一个连续的地址集(区间),并以关键字中地址集的‘像’作为记录在表中的位置,成为哈希表。通俗地讲就是哈希表就是用来记录一组数据(key)的地址的。哈希函数的构造方法。1. 直接定址法。H(key) = key ;或H(key) = a*key +b.2. 数字分析法。3.原创 2014-03-24 12:47:07 · 811 阅读 · 0 评论 -
近30种数据结构总结
1、线性表的动态分配顺序存储结构:#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct { ElemType *elem;//存储空间基址 int length;//当前长度 int listsize;//当前分分配的存储容量}sqlist;2、线性表的dang未完原创 2014-03-23 23:54:55 · 1167 阅读 · 0 评论 -
关于数组计数的巧妙使用
一般来说,数组计数使用主要的思想就是把,数组里的东西转到数组的下标里,然后计算出现的各数。如:a[?]={, , , , };转换成b[a[第几个]]++;这样就可以对数组a里面的数字进行计数。使用的地方:1、比如计算一个字符的各个字符在某个字符串出现的次数。2、同理,可以判断一个字符串的各个字符是否存在于另一个字符串。原创 2014-03-20 17:07:39 · 2110 阅读 · 0 评论 -
在一个无序的数组中找出最长的等差数列
关于如何在一个无序的数组中找出一个最长的数组:1,要保证数字的顺序与原来一致,用一个hashmap来记录其中任意相邻两个数字的差值,key=a[j] - a[i]其中j >i,value来记录(i , j);然后再对key进行排序,再进行一次遍历就可以求出最长的等差数列。如下:{5, 4, 3, 4, 7, 8}-1 =>(0, 1)(1, 2)1=>(2, 3)(4,原创 2013-09-09 23:45:18 · 5148 阅读 · 0 评论 -
最最重要的必须实行的计划
从现在起必须实行的计划,我认为是必须实行的计划,就是争分夺秒地干,干。。。原创 2013-09-18 00:13:29 · 764 阅读 · 0 评论 -
关于快排
关于快排int adjustArray(int a[], int l, int r){int i=l, j=r;int x = a[i];while(iwhile(ij--;}if(iwhile(ii++;}if(i}a[i] = x;return i;}void quickSort(int a[], int l, int r)原创 2013-09-24 00:05:40 · 1197 阅读 · 0 评论 -
正确完整的快排,上一篇错误
#include "stdio.h"int partition(int a[], int low, int high){int x = a[low];while(lowwhile(low=x){--high;}a[low] = a[high];while(low++low;}a[high] = a[low];}a[low] = x;原创 2013-09-28 00:52:22 · 838 阅读 · 0 评论 -
基于非比较的排序:计数排序(countSort),桶排序(bucketSort),基数排序(radixSort)
计数排序条件:要排序的数组的元素必须是在一定范围的,比如是1~100。在排序之前我们必须知道数组元素的范围。思路:顾名思义:就是用一个数组来计数的。步骤:1、用一个数组来计数count[ ],将要排序的数组arr[ ]的元素记为数组count[ ]数组的下标,如果数组arr[]中有两个数相同就在count[]++.如count[arr[i]]++.2、 再一次遍历数组count原创 2014-05-04 00:52:38 · 2297 阅读 · 0 评论 -
TX一面的一道算法题
如题:有一个序列a,0 1 2 3...n求另一个序列b,使得b中第i个元素表示ai在b中出现的个数。例如n=9时:a:0 1 2 3 4 5 6 7 8 9b:6 2 1 0 0 0 1 0 0 00在b中出现6次,1在b中出现2次,2在b中出现1次,6在b中出现1次,其他数出现0次。那么对于一个存在n项序列a。a:0 1 2 3 4 5 ... n (7原创 2014-09-26 11:35:45 · 1017 阅读 · 0 评论
分享