数据结构与算法
weixin_42061676
这个作者很懒,什么都没留下…
展开
-
排序算法-----选择排序
public class SelectSort { /** * 选择排序 * 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 * 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。 * O(n2)的时...原创 2018-07-18 09:54:49 · 112 阅读 · 0 评论 -
排序算法-------基数排序RadixSort
/** * 基数排序 基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 * 然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 * 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。 * 由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数, 所以基...转载 2018-07-18 10:12:35 · 337 阅读 · 0 评论 -
排序算法---------计数排序
/** * 计数排序 * 构建一个数组,存放从0到最大值中每个数的个数,然后依次遍历数据,将数据取出来。 * @author Administrator * */public class CountSort { public static void main(String[] args) { int[] arr = {1,2,3,1,2,34,5,6,3,...原创 2018-07-18 10:10:04 · 179 阅读 · 0 评论 -
排序算法-------快速排序
public class MergeSort2 { public static void main(String[] args) { int[] arr = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 5...原创 2018-07-18 10:07:12 · 451 阅读 · 0 评论 -
排序算法------归并排序2 递归实现
public class MergeSort2 { public static void main(String[] args) { int[] arr = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 5...转载 2018-07-18 10:05:54 · 174 阅读 · 0 评论 -
排序算法------归并排序-1 非递归方法
/** * 有问题 * 归并排序---非递归 * 基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。 * 然后再把有序子序列合并为整体有序序列。 * 归并排序是建立在归并操作上的一种有效的排序算法。 * 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 * 归并排序...转载 2018-07-18 10:04:26 · 189 阅读 · 0 评论 -
排序算法-------希尔排序(ShellSort)
public class ShellSort { /** * 希尔排序 * 步长的确定该是一个问题,影响最终效率。 * Shell 排序 第一个突破时间复杂度为O2的算法, 非稳定排序算法 * 算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组, * 每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后...原创 2018-07-18 10:01:33 · 143 阅读 · 0 评论 -
排序算法-----堆排序
public class HeapSort { /** * 初始化 * 根据数组建立一个堆,此处为大顶堆,大顶堆的每个节点的值都大于其左右孩子的值 * @param arr */ public static void buildHeap(int[] arr) { int len = arr.length; in...原创 2018-07-18 10:00:27 · 117 阅读 · 0 评论 -
排序算法-----插入排序
//插入排序// 假设第一位已经排序好了,从第二位开始,寻找满足条件的数,相应的数往后移public class InsertSort { public static void sortInsert(int[] arr) { for(int i=1;i<arr.length;i++) { int j = i; int...原创 2018-07-18 09:59:03 · 114 阅读 · 0 评论 -
排序算法-----冒泡排序
public class BubbleSort { /** * 冒泡排序 * 时间复杂度 O(n^2) * 稳定排序 * @param arr */ public static void bubbleSort(int[] arr) { for(int i=1;i<arr.length;i++) { ...原创 2018-07-18 09:57:02 · 89 阅读 · 0 评论 -
轻松理解归并排序--java递归实现
归并排序的算法思想是:设 r[u…t] 由两个有序子表 r[u…v-1] 和 r[v…t] 组成,两 个子表长度分别为 v-u、t-v+1 代码示意图如下: public class MergeSort { /** * 时间复杂度 nlogn * @param a 原数组 * @param swap 中间数据,存放归并元素 * @param...原创 2018-08-21 15:55:31 · 289 阅读 · 0 评论