
算法
文章平均质量分 60
hanruikai
aaa
展开
-
java算法篇排序算法之冒泡排序
1、循环趟数,最外层是循环趟数,2、每趟比较元素发生变化,与条件一有关,里面的循环是比较相邻的元素3、前两点把握正确,忽略第三点,算法终止条件及其优化,当不发生交换时,算法终止代码如下:package althorgrim;/** * 冒泡排序 * @author hanrk-2734 * */public class TestBubble { //注意算...原创 2012-04-16 10:08:36 · 681 阅读 · 0 评论 -
二叉树遍历前序遍历
public void preOrderTraverse(TreeNode node){ Statck nodes=new Statck nodes.push(node); while(!nodes.isEmpty()) { TreeNode current=nodes.pop(); if(current.right!=null) ndoes.push(转载 2017-07-25 18:22:08 · 466 阅读 · 0 评论 -
归并排序
public class TestMergeSort{ public static void merge(int[] a, int low, int mid, int high) { int[] temp = new int[high - low + 1]; int i = low;//left pointer int j = mi原创 2017-07-19 12:44:54 · 272 阅读 · 0 评论 -
基数排序
按位进行计数排序,因为计数排序只能处理小范围的int,对于较大的int处理,空间浪费太大。import java.util.Random;public class RadixSort{ // Main function to test performance sorting 1 million integers. // Results in about 220 ms原创 2017-07-19 12:43:26 · 267 阅读 · 0 评论 -
计数排序
Suppose we have an input array consisting of integers, each in the range . The counting-sortalgorithm sorts using an auxiliary array of counters. It outputs a sorted version of as an auxili原创 2017-07-14 17:40:00 · 288 阅读 · 0 评论 -
无序整形数组,如何找到最长连续序列长度,时间复杂度O(n)
import java.util.HashMap;import java.util.Map;public class LongestConsecutive{ Map map=new HashMap<>(); public int longestConsecutive(int[] r){ int res=0; for (int i :原创 2017-07-13 16:43:19 · 727 阅读 · 0 评论 -
java排序算法之希尔排序(100%原创,哈哈)
1、设置间隔并循环2、每个间隔内进行插入排序注意:最外层循环为间隔的个数,第二层循环为每个间隔内插入排序的次数,第三层循环为每个间隔内的每一种情况下的插入排序,例如第一层为gap=5、2、1的循环第二层为89、81和12、27和65、2和97、61和61、98 的循环,第三层为89和81的内部插入排序 package com.sor;import java.util原创 2012-04-15 21:10:16 · 696 阅读 · 0 评论 -
java排序算法之直接插入排序
package com.sor;public class TestInsertSort { public static void insertSort2(Comparable []data){ for (int i = 1; i < data.length; i++) { Comparable key=data[i]; int index=i;原创 2012-04-10 22:52:58 · 610 阅读 · 0 评论 -
非递归先序,中序,后序遍历
//===============采用非递归方式======================== public void theFirstTraversal_Stack(Node root) { //先序遍历 Stack stack = new Stack(); Node node = root; while (node != null || stack.size()转载 2016-08-03 15:57:21 · 497 阅读 · 0 评论 -
二叉树的深度优先遍历、广度优先遍历和非递归遍历
二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结转载 2012-06-06 17:02:33 · 4418 阅读 · 0 评论 -
java算法之构建二叉树
package tree;/** * 二叉树 * @author hanrk-2734 * */public class MyBinaryTree { //要插入位置的根节点 private Node root; private static class Node { Node left; Node right; in原创 2012-05-04 11:02:56 · 869 阅读 · 0 评论 -
java算法篇之折半查找
package althorgrim;/** * 1、必须采用顺序存储结果 * 2、关键字必须有序 * @author hanrk-2734 * */public class TestBinarySearch { public static int binarySearch(int a[],int goal){ int high=a.length-1; int l...原创 2012-04-19 16:06:00 · 7017 阅读 · 3 评论 -
java排序算法之堆排序
说明选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加快,选择排序法的速率也就可以加快,Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序法。解法Heap排序法使用Heap Tree(堆积树),树是一种资料结构,而堆积树是一个二元树,也就是每一个父节点转载 2012-04-18 21:05:09 · 580 阅读 · 0 评论 -
经典算法之背包问题(0-1背包)
说明假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、单价与重量如下所示: 0 李子 4KG NT$4500 1 苹果 5KG NT$5700 2 橘子 2KG NT$2250 3 草莓 1KG NT$1100转载 2012-04-17 21:24:40 · 5546 阅读 · 0 评论 -
java排序算法之选择排序
1、循环找到第n个最小值,放在第n个位置package com.sor;import java.util.Random;public class TestSelectSort { //[3, 25, 20, 79, 18, 58, 20, 38, 66, 56] public static int[] selectSort(int[] r){ int index原创 2012-04-17 22:10:20 · 596 阅读 · 0 评论 -
java算法篇给定一个数组找出第一个重复(不重复)的元素
第一个重复算法分析(倒序放入map,最后一个重复的元素)第一个想到的是用hashmap存储元素,计算出现次数,然后遍历hashmap,输入值为1的元素。但是后来发现不对,输出的是所有出现一次的元素,因为map是无序的,不一定是第一个。怎么办?在遍历数组,存入hashmap的时候,判断如果不存在,就设置index=i,记录索引。但是此时map没有内容,根本无法判断是否重复?怎么办?倒序遍...原创 2018-09-14 15:30:37 · 8015 阅读 · 1 评论