
Algorithm
工作时间
Hate coding !
展开
-
折半查找算法
/* Date:2014.12.16 折半查找算法,也叫二分查找,用于对拥有唯一元素的查找。 需要先经过按序排序后才能进行。只对有序表适用。*///先快速排序:(此处增序,也可降序)void QuickSort(int *arr,int left,int right){int key,temp,ltemp,rtemp;ltemp = left;r原创 2014-12-17 11:14:17 · 795 阅读 · 0 评论 -
希尔排序算法
/* Date:2014.12.14希尔排序思路:基于插入排序的思想。流程:1).将有 n 个元素的数组分成 n/2 对,第1个数据和第(n/2 + 1)个数据为一对,依次配对; 2).一次循环使每一个序列对排好顺序; 3).再分为 n/4 对进行排序; 4).重复操作,随序列对数的减少最后变为1个,就完成了整个原创 2014-12-14 19:41:10 · 613 阅读 · 0 评论 -
插入排序算法
/* date:2014.12.13插入排序思路:通过对未排序的数据逐个插入合适的位置,即通过比较和插入来达到排序的目的。流程:1).对数组的前两个数据进行从小到大的排序; 2).将第 n 个数据与前 n-1 个排好的数据进行比较,将第 n 个数据插入到合适位置; 3).再以同样的方式把剩下的数据逐个进行插入,直至(n-1次后)有序。时间复杂度:最差原创 2014-12-13 18:38:20 · 712 阅读 · 0 评论 -
冒泡排序算法
/* date:2014.12.13冒泡排序思路:交换排序,通过相邻数据的比较、交换来达到排序的目的。流程:1).对数组中的各数据,依次比较相邻的两个元素的大小; 2).如果前面的数据大于后面的数据,就交换这两个数据,经过第一轮的多次比较排序后,便可把最小(或最大)的数据拍好; 3).再以同样的方式把剩下的数据逐个进行比较,直至(n-1次原创 2014-12-13 17:24:34 · 785 阅读 · 0 评论 -
选择排序算法
/* Date:2014.12.13选择排序思路:在每一步中选取最小值来重新排列,通过选择和交换来实现排序。流程:1).首先从原始数据中,选择最小的一个数据,将其和位于第一个位置的数据交换; 2).再从剩下的 n-1 个数据中选择最小元素和第二个位置的数据进行交换; 3).重复(2)(共 n-1 次),直到数组有序。时间复杂度:最差O(n^2),平均原创 2014-12-13 17:31:12 · 775 阅读 · 0 评论 -
概率算法 蒙特卡罗算法
/***Date:2014.12.11***///概率算法思想:统计学思路。//基本过程:1)将问题转化为应的容易计算面积的几何图形S,问题结果对应几何图形中的某一部分S1;////////////2)向几何图形中随机撒点;////////////3)统计几何图形S、S1中的点数,根据二者面积关系以及二者中的点数来计算得到结果;////////////4)判断结果是否达到需要精原创 2014-12-11 22:45:23 · 2094 阅读 · 0 评论 -
穷举算法 鸡兔同笼问题
/**Date : 2014.12.10**///穷举算法,依赖于计算机的强大的计算能力,列举每一种可能情况;//基本思想 : 就是从所有可能的情况中搜索正确的答案。//执行步骤 1):对于一种可能的情况,计算其结果;///////////////////2)判断结果是否满足要求,如不满足则执行(1)来搜索下一个可能的情况,如满足,则表示寻找到一个正确的答案。//例:150原创 2014-12-10 23:40:05 · 1942 阅读 · 0 评论 -
递归算法
/***Date : 2014.12.10***///递归算法:是在程序中不断反复“调用自身”来达到求解问题的方法。 要求带求解问题能够分解为相同问题的一个子问题,多次递归调用,完成求解。//递归调用时主调函数又是被调函数;执行递归的函数将反复调用其自身,每调用一次就进入新的一层。//直接递归:在函数中调用函数本身。//间接递归:间接地调用一个函数,用得不多。//递归求阶乘原创 2014-12-10 23:37:00 · 693 阅读 · 0 评论 -
斐波那契 递推算法
/***Date : 2014.12.10***///递推算法:是理性思维模式的代表,根据已有的数据和关系,逐步推导而得出结果。//执行过程:1)根据已知的结果和关系,求解中间结果。///////////////////// 2)判断是否满足要求,若未满足,则继续根据已知结果和关系求解中间结果;若满足要求,则表示寻找到一个正确答案。//13世纪,意大利数学家斐波那契的《算盘书》中记原创 2014-12-10 23:29:04 · 1233 阅读 · 0 评论 -
3_顺序栈的基本操作
/****date:2014.12.08*****//***顺序栈的基本操作***/ /*** Last in First out ( LIFO ) ***/顺序栈:使用地址连续的内存单元依次保存栈中的数据,可以定义一个指定大小的结构数组来作为栈;栈底元素序号为0,栈顶元素序号为Top;栈内元素遵循“后进先出“(LIFO)原则;只能在栈的一端进行操作,即在栈顶位置对栈内元素进行操作。原创 2014-12-09 23:13:27 · 924 阅读 · 0 评论 -
2_单链表基本操作
单链表基本操作原创 2014-12-09 22:15:58 · 566 阅读 · 0 评论 -
1_顺序表基本操作
/*******date:2014.12.6*******/ 顺序表:定义:就是按照顺序存储方式存储的线性表,各 节点按照逻辑次序依次存放在计算机的一组连续的存储单元中。 只要知道了首地址以及每个数据元素所占的存储长度,就可以计算出任何一个数据元素(数据节点)的位置;节点类型相同的情况下:基地址LOC(a1);每个节点占C个存储单元;原创 2014-12-08 15:55:33 · 950 阅读 · 0 评论 -
快速排序算法
/* date:2014.12.14快速排序思路:和冒泡排序相似,基于比较和交换来实现排序,改进后效率高了。流程:1).首先设置一个分界值,通过该值将数组分成左右两部分,左边序列小于等于它,右边序列大于等于它; 2).对于左边和右边的序列,分别执行(1)操作; 3).重复(2),相当于递归,直到有序。时间复杂度:最差O(n^2),平均原创 2014-12-15 20:35:56 · 619 阅读 · 0 评论 -
堆排序算法
/* date:2014.12.15堆结构:是一种树结构,准确说为完全二叉树。在这个树中,每个节点对应原始数据的一个记录,且满足一下条件:1.如果按照从小到大的顺序排序,要求非叶节点的数据要大于或等于其左右子节点的数据;2.如果按照从大到小的顺序排序,要求非叶节点的数据要小于或等于其左右子节点的数据。堆排序思路:基于选择排序的思想,利用堆结构和二叉树的一些性质来完成数据的排序。流程:1原创 2014-12-15 19:02:43 · 618 阅读 · 0 评论