算法
人生迷茫
这个作者很懒,什么都没留下…
展开
-
算法之排序 选择排序(一)简单选择排序
简单选择排序简单选择排序寻找无序序列中最小值(最大值)的索引,再插入到有序序列的相应位置实现:/** * 简单选择排序 * @author 陈鑫 * */public class SimpleSelectionSort { public static int[] sort(int [] arr) { for(int i=0; i<arr.length; i++) { int a = i; //找寻当前未排序序列中的最小值 for(int j=i原创 2020-06-09 21:00:47 · 217 阅读 · 0 评论 -
算法之排序 交换排序(二)快速排序
快速排序快速排序是由冒泡排序改进而得,从无序序列中挑选一个记录作为中心记录,将所有的数值与中心记录进行比较大的放在中心值右边,小的放入中心值左边,然后再对中心值左右子序列进行相同操作实现:/** * 快速排序 * @author 陈鑫 * */public class QuickSort { public static int sort(int [] arr,int low,int hight) { int key = arr[low];//保存中心值 while(lo原创 2020-06-09 20:53:44 · 153 阅读 · 0 评论 -
算法之排序 交换排序(一)冒泡排序
冒泡排序通过两两相邻记录关键字的比较,如果逆序就交换位置,使得最大的记录左移实现:/** * 冒泡排序 * @author 陈鑫 * */public class BubbleSort { public static int[] sort(int [] arr) { for(int i=0; i<arr.length; i++) { for(int j=i-1; j >= 0; j--) { if(arr[j] > arr[j+1])原创 2020-06-09 20:46:28 · 139 阅读 · 0 评论 -
算法之排序 插入排序(三)希尔排序
希尔排序希尔排序是采用分组插入的方法,先将整个待排序的序列分割成几组,从而减少直接插入排序的数据量,对每组分别进行直接插入排序。实现:/** * 希尔排序 * @author 陈鑫 * */public class HillSort { public static int[] sort(int [] arr) { int dk = arr.length/2;//增量 int a = 0; while(dk > 0) { for(int i=dk; i&l原创 2020-06-09 20:41:15 · 101 阅读 · 0 评论 -
算法之排序 插入排序(二)折半插入排序
折半插入排序直接插入排序采用顺序查找当前记录在已排好的序列中的插入位置,而折半插入排序采用“折半查找”查找插入位置算法步骤:1,设待排序的记录存放在数组r[1....n]中,r[1]是一个有序序列2,循环n-1次,每次使用顺序查找法,查找r[i](i=2....n)在已排序好的序列r[1....n-1]中插入位置,然后将r[i]插入到表长为i-1的有序列表r[1,.....i-1],直到将r[n]插入到表长为n-1的有序列序列r[1,.....,n-1],最后得到一个表长为n的有序列表实原创 2020-06-09 20:35:09 · 454 阅读 · 0 评论 -
算法之排序 插入排序(一)直接插入排序
直接插入排序直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排序好的有序列表中,从而得到一个新的、记录数量增1的有序列表算法步骤1,设待排序的记录存放在数组r[1....n]中,r[1]是一个有序序列2,循环n-1次,每次使用顺序查找法,查找r[i](i=2....n)在已排序好的序列r[1....n-1]中插入位置,然后将r[i]插入到表长为i-1的有序列表r[1,.....i-1],直到将r[n]插入到表长为n-1的有序列序列r[1,.....,n-1],最后得到一个表原创 2020-06-09 20:28:22 · 1464 阅读 · 0 评论 -
数据结构之图 最短路径算法
最短路径:计算从Vi到Vj的权总和最小的路径/** * 贪婪算法实现 * @author 陈鑫 * 有权无负值图最短路径算法 */public class ShortestPath { static class Vertex{ public List<Vertex> adj;//邻接顶点集合 public Boolean known;//是否遍历过,防止有圈图 public Integer dist;//距离 public Vertex path;//路径原创 2020-05-29 17:32:00 · 387 阅读 · 0 评论 -
数据结构之图 拓扑排序
拓扑排序拓扑排序是对有向无圈图的顶点的一种排序,是得如果存在一条从Vi到Vj的路劲,那么在排序中Vj就出现在Vi的后面。例如课程的学习顺序。原创 2020-05-29 17:28:22 · 426 阅读 · 0 评论 -
算法之回溯算法-24点问题
24点问题:收取四张牌加起来等于24点的可能有哪些?/** * * @author 陈鑫 * 回溯解决24点问题 * */public class TwentyFourPoints { public static void scratchCard(ArrayList<Integer> cardList,ArrayList<Integer> handList) { int length = handList.size();//手牌数量 Integer原创 2020-05-29 17:13:55 · 1538 阅读 · 0 评论