
算法
maozezhong0
这个作者很懒,什么都没留下…
展开
-
1.直接插入排序
1.简述: 假设有一组随机无序序列,每次从其中取一个数按照一定规律(升序或者降序)插入有序序列中,直到排完所有数。 第一次取无序序列第一个数作为有序序列,而后再从无序序列中取数,与有序序列中的数逐个比较,选取合适位置插入。。。。。。取第i个数需要比较i-1趟。。。。2.相关代码:void insertsort(int a[100],int n){ int i,j,tem原创 2016-02-22 20:57:15 · 322 阅读 · 0 评论 -
求最大子序列
问题描述输入一个序列,返回和为最大的那个子序列的和。解题方案遍历package test;public class Solution { public int findmax(int[] a) { int thissum ; int maxsum = 0; for(int i=0;i<a.length;i++) {原创 2016-06-27 14:36:22 · 247 阅读 · 0 评论 -
AVL树(平衡二叉树)
一颗AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定位-1)。 二叉查找树的性质:对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树的所有项的值大于X中的项。AVL树的插入在树中插入一个值可能破坏AVL树的性质,所以我们要对树进行调整,这一操作就是**旋转**。在插入以后,只有从插入点到根节点的的路径上的节点的平衡可能改变,因为只有这些节点的子树可原创 2016-07-15 13:26:27 · 817 阅读 · 0 评论 -
浅谈堆排序
首先我们要了解二叉堆。二叉堆的定义堆是一个被完全填满的二叉树. 而二叉堆又满足一下两个特性: 1.父节点的值总是大于等于(或者小于等于)左儿子的值以及右儿子的值 2.二叉堆中,任一节点的左子树以及右子树(如果有的话)均为二叉堆(都是最大堆或者最小堆)。 如果父节点的值总是大于等于儿子节点的值,那么这个堆就称为最大堆。 如果父节点的值总是小于等于儿子节点的值,那么这个堆就称为最小堆。二叉树例原创 2016-07-08 12:28:10 · 1025 阅读 · 0 评论 -
快排序
快排序与归并排序类似,都用到了分治加递归。快排序的基本思路:1.从数组a中选取一个枢纽元flag。 2.然后调整数组,使得flag左边的值全是小于flag的,右边的值都是大于flag的。 3.递归flag左边和右边。快排序的步骤:1.选枢纽元 2.分割1.选取枢纽元 随机从数组选取枢纽元的方法虽然可行,但是对于预排序的输入这种做法效果很差。 这里,我们选择数组的开头,中间,原创 2016-07-09 16:10:17 · 205 阅读 · 0 评论 -
扇形涂色问题
题目描述将一个圆形等分成N个小扇形,将这些扇形标记为1,2,3,…,N。现在使用M种颜色对每个扇形进行涂色,每个扇形涂一种颜色,且相邻的扇形颜色不同。求:有多少种涂色方法。分析设a(n)为符合要求的第n个扇形的涂色方法。 对扇形1有m种涂色方法,扇形2有m-1种涂色方法,扇形3也有m-1种涂色方法,扇形n也有m-1种涂色方法。于是,共有m×(m−1)^(n−1)种不同的涂色方法,...原创 2018-03-13 10:33:40 · 4700 阅读 · 0 评论