算法
似懂放得下
略知一二 探求三四
展开
-
选择排序
简单选择排序:就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。简单选择排序复杂度分析:它的比较次数一定:n(n-1)/2。也因此无论在序列何种情况下,它都不会有优秀的表现,可见对数据的有序性不敏感。它虽然比较次数多,而对于交换次数而言,当最好的时候,交换为0次,最坏的时候交换次数为n-1次,所以数据交换量却很少,基于时间复杂度是比较与交换次数的总和,因此原创 2016-08-15 22:41:31 · 511 阅读 · 0 评论 -
POJ2811 未完成
import java.util.Scanner;public class POJ2811 { public static void main(String[] args) { char[] oriLights = new char[5]; char[] lights = new char[5]; char[] result = new原创 2017-11-17 21:44:58 · 423 阅读 · 0 评论 -
前段时间学了点基础的算法,一直在本地放着,现在移到CSDN, BLOJ1088
import java.util.Scanner;public class BLOJ1088 { static int[][] map; static int[][] mapMemory; static int row; static int col; public static void main(String[] args) {原创 2017-11-13 21:33:21 · 222 阅读 · 0 评论 -
BST二分搜索树
import java.util.LinkedList; import java.util.Queue;class Node { private int key; private int value; private Node left; private Node right;public int getKey() { return key;}pu原创 2017-11-13 21:33:51 · 255 阅读 · 0 评论 -
12+34,和为36
import java.math.BigInteger; import java.util.Scanner;/*给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字), 使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号, 最好的摆法就是12+34,和为36 */public class CalcMin { static Scanner sc原创 2017-11-13 21:34:12 · 981 阅读 · 0 评论 -
称硬币
import java.util.Scanner;/*1 ABCD EFGH even ABCI EFJK up ABIJ EFGH even */ public class Coin { static char[][] left_set = new char[3][4]; static char[][] right_set = new char[3][4];原创 2017-11-13 21:35:02 · 674 阅读 · 0 评论 -
实现一个基本图
import java.util.LinkedList;//稀疏图的顶点类 class Vertex { LinkedList list; }class SparseGraph { int v, e = 0; private boolean directed; private Vertex[] g;public SparseGraph(int v, boo原创 2017-11-13 21:35:24 · 255 阅读 · 0 评论 -
Fibonacci 动态规划
//0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, public class FiB { public static void main(String[] args) { System.out.println(Fib(8)); System.out.println(Fib2(8)); } //迭代原创 2017-11-13 21:36:15 · 357 阅读 · 0 评论 -
Hanoi
public class Hanoi {public static void main(String[] args) { hanoi(10,'a','b','c');}private static void hanoi(int n,char src,char support,char dest) { if (n == 1) { System.out.println(原创 2017-11-13 21:36:47 · 231 阅读 · 0 评论 -
HeapSort
//堆排序 public class HeapSort {public static void main(String[] args) { int[] arr = {431,9,3,43,65,4,6}; heapSort1(arr); heapSort2(arr);//heapify heapSort3(arr);//原地堆排序}private static v原创 2017-11-13 21:37:07 · 746 阅读 · 0 评论 -
通过堆实现一个优先队列,
//最大堆,数组实现完全二叉堆 public class MaxHeap { int[] data;// data[0]为最大堆的数量 int capacity;//最大堆的容量public MaxHeap(int capacity) { this.capacity = capacity; data = new int[capacity + 1]; da原创 2017-11-13 21:38:20 · 636 阅读 · 0 评论 -
POJ1163三角形
import java.util.Scanner;/*输入格式: 5 //表示三角形的行数 接下来输入三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找一条从顶部到底边的路径, 使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。 只需要求出这个最大和即可,不必给出具原创 2017-11-17 21:43:39 · 300 阅读 · 0 评论 -
POJ2694逆波兰
import java.util.Scanner;//逆波兰 public class POJ2694 { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { System.out.format(“%.6f”, calc());原创 2017-11-17 21:43:56 · 389 阅读 · 0 评论 -
冒泡
#include<stdio.h>void bubble_sort(int array[],int len){ int i,j,count1,count2 = 1; for(i=0;i<len;i++) { for(j=0;j<len-i-1;j++) { //交换 if(array[j]>arr原创 2016-08-13 23:39:19 · 580 阅读 · 0 评论 -
鸡尾酒排序
冒泡的变种“`includeinclude原创 2016-08-14 20:41:41 · 453 阅读 · 0 评论 -
直接插入排序
时间复杂度: 最好情况:O(n) 最坏情况:O( n*n ) 平均情况:O(n*n)空间复杂度: O(1)稳定性: 稳定#include<stdio.h>void printArray(int a[], int size) //打印数组元素{ int i; for(i = 0; i < size; i++) printf原创 2016-08-14 23:34:58 · 691 阅读 · 0 评论 -
冒泡排序的优化
冒泡排序的优化 #include<stdio.h>void bubble_sort(int array[],int len){ int i,j,count1,count2 = 1; int flag1; //flag1标志位,每跑完一趟就判断一次原数组现在是否有序,如果有序就break; int flag2; //flag2记录位,记录下最后一次交换的下标j;原创 2016-08-14 18:16:29 · 698 阅读 · 0 评论 -
OJ2755神器的口袋 普通递归+递推+递推滚动数组
“` import java.util.Scanner; //神器的口袋~ public class OJ2755 { static int[] weigth; static int[][] results; static int[] results2; static Scanner scanner = new Scanner(System.in);pu原创 2017-10-23 20:14:49 · 882 阅读 · 0 评论 -
华为OJ放苹果
import java.util.Scanner;//华为oj放苹果 public class layApple { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String apple = scanner.next();原创 2017-11-17 21:41:29 · 336 阅读 · 0 评论 -
LCS
import java.util.Timer;public class LCS { static int[][] memoryDP = new int[100][100];public static void main(String[] args) { String str1 = "abfdasgffdvddgfdvcq"; String str2 = "vfdcsdcew原创 2017-11-17 21:42:06 · 773 阅读 · 0 评论 -
LIS
import java.util.Scanner; //最长上升序列 public class LIS {public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int length = scanner.nextInt(); int[] values = new原创 2017-11-17 21:42:25 · 272 阅读 · 0 评论 -
MaxHeap
//最大堆,数组实现完全二叉堆 public class MaxHeap { int[] data;// data[0]为最大堆的数量 int capacity;//最大堆的容量public MaxHeap(int capacity) { this.capacity = capacity; data = new int[capacity + 1]; da原创 2017-11-17 21:42:41 · 554 阅读 · 0 评论 -
NQueen
import java.util.Scanner;public class NQueen { static int[] queenPos = new int[100]; static int N; static int solve;public static void main(String[] args) { Scanner scanner = new Sca原创 2017-11-17 21:43:00 · 296 阅读 · 0 评论 -
OJ2755神器的口袋
import java.util.Scanner;//神器的口袋~ public class OJ2755 { static int[] weigth; static int[][] results; static int[] results2; static Scanner scanner = new Scanner(System.in);public s原创 2017-11-17 21:43:21 · 345 阅读 · 0 评论 -
迭代和递归基本思想
import java.util.Arrays; import java.util.Collections; import java.util.List;public class IterationAndRecursion {public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; System原创 2017-11-13 21:38:54 · 464 阅读 · 0 评论