算法
rikochet
这个作者很懒,什么都没留下…
展开
-
冒泡排顺序的基本思想(原理)
冒泡排序小是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。冒泡排序算法的原理如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。...原创 2019-03-19 20:19:52 · 1256 阅读 · 0 评论 -
C/C++排序算法———快排
快排的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。其本质是分治策略。方法步骤(一般情况):1.先从数列中选第一个数作为基准数。2.然后从后往前找第一个比基准小的数据放在数列的第一个位置,然后从前往后找比基准大的数放在刚才...原创 2019-03-16 16:59:36 · 1107 阅读 · 0 评论 -
C/C++排序算法——选择排序
什么是选择排序?选择排序就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。具体步骤:假设有一个待排序的数组arr,则:第1趟从arr[0]~arr[n-1]中选取最小值,与arr[0]交换;第2趟从arr[1]~arr[n-1]中选取...原创 2019-03-17 15:31:47 · 361 阅读 · 0 评论 -
算法——二分查找(折半查找)
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。使用二分查找的条件:1.必须采用顺序存储结构。2.必须按关键字大小有序排列。通俗一点的说:如果数据是一个数组,那么这个数组必须是有序的思路:二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组...原创 2019-04-08 21:01:56 · 412 阅读 · 0 评论 -
Leetcode:62题 不同路径(一个机器人位于一个 m x n 网格的左上角 。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角)
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?用例: 3*2的方格 共3条路径; 7*3的方格 共28条路径。思路:因为机器人每次只能向下或者向右移动一步,所以机器人在走到右下角那...原创 2019-07-21 18:29:37 · 8156 阅读 · 1 评论 -
Leetcode 655:输出二叉树
在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:行数m应当等于给定二叉树的高度。列数n应当总是奇数。根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下部分。左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西...原创 2019-08-04 23:27:46 · 326 阅读 · 0 评论 -
二叉树的遍历(前序、中序、后序)
struct TreeNode{ int val; TreeNode* leftchild; TreeNode* rightchild; TreeNode(int x) : val(x), leftchild(NULL), rightchild(NULL) {}};void PreOrder(TreeNode *root) //前序遍历{ if (root == NU...原创 2019-08-31 17:57:14 · 218 阅读 · 0 评论