算法
奔跑吧小蜗牛
志存高远,脚踏实地。
展开
-
合并两个有序数组
题目链接:https://leetcode-cn.com/problems/merge-sorted-array/###题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m +...原创 2019-11-14 10:15:56 · 437 阅读 · 0 评论 -
基本排序算法——选择,插入,冒泡
#includevoid print_arr(int a[], int n) { int i; for(i=0; i<n; i++) { printf("%d%c", a[i], i==n-1 ? '\n' : ' '); }}void selection(int a[], int n) { int i, j, min, t; for(i=0; i<n-1; i++) {原创 2015-12-16 14:23:48 · 402 阅读 · 0 评论 -
快速排序
算法步骤:1、取最左边元素为基准元素。 2、从右往左,找到一个小于基准元素的位置j,从左往右,找到一个大于基准元素的位置i,交换两个位置的值。 3、若此时i 4、若此时i=j,则说明找到了基准元素的最终位置,将该位置的元素同最左边基准元素进行交换。注意事项一:第2步中必原创 2015-12-18 15:02:34 · 317 阅读 · 0 评论 -
二叉树先序遍历和中序遍历的非递归算法
二叉树的递归遍历算法很简单,而非递归遍历算法中的先序和中序遍历相比于后序遍历更简单一点,在这先实现先序和中序遍历的非递归算法。先序遍历代码如下:public static void preOrder(TreeNode root) { TreeNode current = root; Stack stack = new Stack(); while(current!=null |原创 2016-04-09 14:17:51 · 1263 阅读 · 0 评论 -
二叉树后序遍历的非递归算法
二叉树的后续遍历的非递归算法与二叉树的先序和中序遍历的非递归算法相比稍微复杂一点。大致思路是:如果当前结点左右子树均为空,则可以访问当前结点,或者左右子树不均为空,但是前一个访问的结点是当前结点的左孩子或者右孩子,则也可以访问当前结点,如果前面两种情况均不满足(即,当前结点的左右孩子不均为空,并且前一个访问的结点不是当前结点左右孩子中的任意一个),则若当前结点的右孩子不为空,将右孩子入栈,若当原创 2016-04-16 16:47:33 · 7745 阅读 · 1 评论 -
大数乘法
#include#includeusing namespace std;string multiply(string a, string b);void add(char * a, char *b); //将b加到a上面。前提条件:a和b的长度一样长,并且最高位不会产生进位void reverse(char* a);void clear(char *a, int len);//将数据原创 2016-05-23 18:26:38 · 386 阅读 · 0 评论 -
字符串全组合与全排列
public class Main { public static void main(String[] args) { combination("abc"); permutation("abc".toCharArray(), 0, "abc".length()-1); } public static void combination(Strin原创 2016-09-05 17:02:52 · 526 阅读 · 0 评论