算法与数据结构
iamwiam
Hello World
展开
-
选择排序
/** *功能:选择排序:每轮外循环之后,前outer是有序的 *@author:iamwiam */public class SelectSort {private int[] a;private int nElem;public SelectSort(int max){ a = new int[max]; nElem = 0;}public void insert(in原创 2017-04-21 10:01:27 · 323 阅读 · 0 评论 -
插入排序
/** *插入排序:每次外循环out之后可以保证out个元素找到自己的位置 * @author iamwiam * */ public class InsertSort {private int[] a;private int nElem;public InsertSort(int max){ a = new int[max]; nElem = 0;}publ原创 2017-04-21 09:26:46 · 227 阅读 · 0 评论 -
改进的冒泡排序
/**改进的冒泡排序:按照升序的方式对数组进行排序,此处我们通过添加标记位,对数组中已经有序的序列不再排序,加快了排序的速度*@ author iamwiam**/public class Bubble { public static void BubbleSort(int[] a){ int i,j,temp,flag; int n = a.len原创 2017-04-21 08:52:39 · 427 阅读 · 0 评论 -
递归及典型应用
递归是一种方法调用自身的编程技术。数学本质是数学归纳方法。接下来我们介绍一些典型的递归应用案例,用以帮助理解,欢迎批评指正。 1.三角数字 古希腊数学家发现数字1,3,6,10,15,21,….中存在一种联系。及这个数列中第n项是由第n-1项加n得到,n>1。这个序列中的数字被称为三角数字,因为它们可以被形象化地表示成对象的一个三角排列。 图1 三角数字原创 2017-05-07 23:24:21 · 2701 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; *原创 2017-05-10 12:45:14 · 235 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。/***思路:入队直接用stack1存储,出队需要满足先进先出,因此需要再用一个*stack2将stack1中的内容输出*/Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Intege原创 2017-05-10 15:18:28 · 235 阅读 · 0 评论 -
归并排序
1.归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。 如 设有数列{6,202,100,301,38,8,1} 初始状态:6,202,100,301,38,8,1 第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3; 第二次归并后:{6,100,202,301},{1,8,38},比较次数:4; 第三次归并后:{1,6,原创 2017-06-07 10:28:45 · 283 阅读 · 0 评论 -
希尔排序
2.定义 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 2.分析 周所周知,原创 2017-06-12 16:54:05 · 310 阅读 · 0 评论