经典算法
Medlen
这个作者很懒,什么都没留下…
展开
-
冒泡排序
冒泡排序算法冒泡排序算法是稳定的。时间复杂度:最好平均最坏O(n)O(n2)O(n2)一般实现方式:public static void bubble(int arr[]){ boolean flag = true; while(flag){ flag = false; for(int i=0;i<arr...原创 2018-12-26 22:14:03 · 610 阅读 · 0 评论 -
关于排序算法的一些总结
这个只是一个简单的总结,便于对比和查看类型是否稳定最好平均最坏具体实现直接插入排序稳定O(n)O(n2)O(n2)查看Shell排序不稳定O(n1.3)O(nlog2n)O(2)查看直接选择排序不稳定O(n)O(n2)O(n2)查看堆排序不稳定O(nlog2n)O(nlog2n)O(nlog2n)查看冒泡...原创 2019-04-17 18:54:36 · 148 阅读 · 0 评论 -
平衡二叉树实现(Java)
终于搞出来了!!!import java.util.LinkedList;public class AVLTree { private TreeNode root = null; class TreeNode { int val; int height; int balance; TreeNode parent;...原创 2019-03-23 23:34:30 · 607 阅读 · 1 评论 -
归并排序
时间复杂度O(nlogn)稳定import java.util.*;public class Main{ public static void mergeSort(int arr[]){ int ans[] = new int[arr.length]; //这里创建一个数组,以免重复申请,耗费资源 divide(arr,0,arr.length-1,...原创 2019-03-30 23:17:53 · 122 阅读 · 0 评论 -
完全二叉树的创建
public static TreeNode buildComplete_Binary_Tree(List<Integer> list){ if(list==null || list.size()==0) return null; TreeNode head = null, p = null; LinkedList<TreeNode> queue = new L...原创 2019-02-26 16:12:50 · 2910 阅读 · 0 评论 -
KMP算法
这里暂时只是记录一下KMP算法代码,详细步骤以后有时间再整理public class Main{ public static int[] getNext(String str){ char p[] = str.toCharArray(); int next[] = new int[p.length]; next[0] = -1; ...原创 2019-03-19 15:12:24 · 157 阅读 · 0 评论 -
二叉树前序、中序、后序遍历的递归和非递归算法以及层次遍历算法
1、前序遍历//递归算法public static void preOrder(TreeNode head){ if(head==null) return ; System.out.println(head.val); preOrder(head.left); preOrder(head.right); } //非递归算法 p...原创 2019-02-26 16:01:09 · 2601 阅读 · 0 评论 -
shell 排序
shell 排序算法,是直接插入排序算法的改进算法。shell排序是不稳定的算法,因为他不能保证原有排序。假设一个数组中有两个2,那么经过shell排序后,这两个2可能已经交换过位置了。shell排序的速度与增量值的选取有很大关系。目前已知的最好序列是:{1,4,10,23,57,132,701,1750,…},具有此分组序列的shell排序比插入排序和堆排序要快。在小数组(少于50个元素)情...原创 2019-02-20 19:25:26 · 537 阅读 · 0 评论 -
直接插入排序
import java.io.*;import java.util.Arrays;public class Test { public static void insertSort(int arr[]){ int tmp,i; for(int j=1; j&lt;arr.length; j++) { tmp = arr[j]; for( i=j-1; i&gt;=0...原创 2019-02-20 19:06:05 · 109 阅读 · 0 评论 -
选择排序算法
时间复杂度:最好 平均 最坏 稳定性:不稳定 public static void sSort(int arr[]){ int t; for(int i=arr.length-1; i>=0; i--) { t = 0; for(int j=1;j<=i;j++) { if(ar...原创 2019-01-02 23:50:42 · 111 阅读 · 0 评论 -
快速排序
时间复杂度:最好 平均 最坏 稳定性:不稳定原理就不讲了,直接用代码理解更快一些1、快速排序算法的递归实现public static int partition(int arr[],int left,int right){ int k = arr[left]; while(left<right){ ...原创 2019-01-02 23:30:04 · 128 阅读 · 0 评论 -
堆排序
时间复杂度最好 平均 最坏 稳定性:不稳定 实现算法:public static void restore(int arr[], int root, int length){ int tmp = arr[root]; int child = 2 * root + 1; while(child < lengt...原创 2019-01-03 23:48:06 · 114 阅读 · 0 评论 -
优先队列的Java实现
实现了以下核心方法:pulbic void push (E x);public E poll ();public E peek ();public boolean isEmpty ();public void resize ();详细设计:import java.util.Comparator;public class PriorityQueue<E> { pri...原创 2019-06-07 23:58:33 · 1387 阅读 · 0 评论