算法
文章平均质量分 63
只要代码敲得好,BUG就追不到我
让世界变得更美好
https://github.com/liusenlindegithub
展开
-
排序算法之 —— 桶排序(九)
其实对桶排序,基数排序、计数排序有点糊涂, 所以进行写博客进行梳理,有的是在网上找的资料 能够提供参考。重点: 理解这句话《 假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组使用桶排序, 需要长度为N的辅助数组. 等间隔的区间称为桶, 每个桶内落在该区间的元素. 桶排序是计数排序的一种归纳结果》自己的理解而桶排序不同于计数排序的是,它的辅助数组大小是由 映射函原创 2016-07-22 23:37:27 · 747 阅读 · 0 评论 -
排序算法之 —— 计数排序法(八)
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#define len 20void show(int str[]);void *Malloc(int size);void show(int str[]){ int i ; for(i = 0;i < len ; i++)原创 2016-07-22 22:19:53 · 724 阅读 · 0 评论 -
排序算法之—— 基数排序(七)
#include<stdio.h>#include<string.h>#include<stdlib.h>#define SIZE 10#define len 20void show(int str[]);void *Malloc(int size);static int find_max(int *array, int length);static int get_bit_si原创 2016-07-22 19:15:44 · 654 阅读 · 0 评论 -
后缀式
即逆波兰式。逆波兰式是波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。这种表示法的优点是根据运算对象和算符的出现次序进行计算,不需要使用括号,也便于用械实现求值。对于表达式x:=(a+b)*(c+d),其后缀式为xab+cd+*:=。原表达式:a*(b*(c+d/e)-f原创 2016-09-08 20:55:56 · 1835 阅读 · 1 评论 -
排序算法之 —— 快速排序(五)
#include<iostream>using namespace std;int Cllcdigital(char *str){ if(NULL == str){ return 0; } int i = 0; int size = 0; int count[256] ={0}; char *sd = NULL; sd =原创 2016-07-16 22:57:37 · 663 阅读 · 0 评论 -
查找算法的小结
顺序查找算法====================1. 算法描述 顺序比较即可。2. 平均查找长度 (n+1)/2, 其中n为表长。 3. 算法实现 省略 4. 优化思想 根据经验,目前被查到越多的元素,将来可能被查到的可能性也越大。所以可以考虑,每次查找到一个元素后,将它和直接前驱交换位置。如果上述的经验从概率上来讲是成立转载 2016-09-03 18:42:11 · 303 阅读 · 0 评论 -
算法空间复杂度
空间复杂度(Space Complexity) 是对一个算法在运行过程中临时占用存储空间大小的量度。 比如插入排序的时间复杂度是O(n^2),空间复杂度是O(n) 而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。 类似于时间复杂度的讨论原创 2016-07-21 16:27:40 · 1146 阅读 · 1 评论 -
如何计算程序时间复杂度(实战篇)
概念: 1.一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 2.一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(原创 2016-07-21 12:34:36 · 4317 阅读 · 0 评论 -
算法的时间复杂度(理论篇)
我们发现一个高级语言编写的程序在计算机上运行所消耗的时间取决于下列因素: 1.算法采用的策略,方案 2.编译产生的代码质量 3.问题的输入规模 4.机器执行的指令速度我们研究算法的复杂度,侧重的是研究算法随着输入规模扩大增长量的一个抽象,而不是精确地定位需要执行多少次,因为如果这样的话,我们又得考虑编译器优化等问题。计算方法 1.一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函原创 2016-07-20 21:13:42 · 1046 阅读 · 0 评论 -
递归再谈
#include<stdio.h>void up_and_down(int);int main(void){ up_and_down(1); return 0;}void up_and_down(int n){ printf("time %d:n location %p/n",n,&n);//1 printf("\n"); if(n<4) up_and_down原创 2016-07-18 12:14:15 · 760 阅读 · 0 评论 -
排序算法之 —— 归并排序(六)
#include<iostream>#include<string.h>#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define len 10void Show(int str[],int length);void mergerarray(int str[],int left,int mid,int right,in原创 2016-07-17 23:02:24 · 610 阅读 · 0 评论 -
递归与尾递归
递归算法是一种直接或者间接调用自身函数或者方法的算法。 递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。 递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。递归算法,其实说白了,就是程序的自身调用。它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这样我们就可以利用大道至简的思想,把一个大的复杂的问原创 2016-06-16 23:49:11 · 1788 阅读 · 0 评论 -
排序算法之 —— 希尔排序(四)
#include<iostream>#include<stdio.h>#include<stdlib.h>#define len 10void Show(int str[],int length);void Shell_sort(int str[],int length);using namespace std;void Show(int str[],int length){原创 2016-07-16 14:15:29 · 910 阅读 · 0 评论 -
排序算法之——直接选择排序(三)
直接选择排序与直接插入排序类似,都将数据分为有序区与无序 区, 不同点: 直接插入排序是将无序区第一个元素直接插入到有序区形成 更大的有序区, 直接选择排序是从无序区选一个最小的元素直接放到有序区最后#include<stdio.h>#include<math.h>#define N 10using namespace std;int main (原创 2016-06-16 22:54:44 · 776 阅读 · 0 评论 -
排序算法之——冒泡排序(一)
冒泡排序: 假设数组长度为N,从大到小进行排序 1.比较相邻前后两个数据,如果前一个小于后面的数据,就将两数交换 2.这样对数组进行一次遍历,则最小数“浮”到最后 3.N = N -1 ,重复前两步#include<stdio.h>#include<math.h>#define N 10using namespace std;int main (int arg原创 2016-06-16 22:11:45 · 753 阅读 · 0 评论 -
排序算法之——直接插入排序(二)
基本思想: 一个待排序数组,开始划分为一个有序数组和无序数组,即就是假设 a[0]为有序 a[1]…a[n-1]为无序数组,每次将一个待排序的数组的第一个元素与有序区进行比较,然后 插入合适的位置本例是采用优化的插入排序算法,结构简单 思路: j代表前面有序的元素个数, 将a[j] 插入到前面a[0]…a[j - 1] ,用数据交换代替数据移动,如果a[j - 1] >原创 2016-06-16 22:06:29 · 369 阅读 · 0 评论 -
不用第三个变量进行交换两数
#include<iostream>#include<stdio.h>using namespace std;int main (){ //加减法实现交换 int a = 2; int b = 3; a=a+b; //将变量a 与 b 的集合赋给 a 变量 b=a-b; //从集合中取出a,赋予b a=a-b;原创 2016-06-29 22:46:59 · 1203 阅读 · 0 评论 -
九大排序算法小结(复杂度)
九大排序算法小结 前面分别实现了几大排序算法的代码,但并未进行解析现在就从算法的时间复杂度,空间复杂度进行谈起下面这幅图是网上考培原创 2016-07-21 19:43:12 · 2257 阅读 · 0 评论