- 博客(5)
- 收藏
- 关注
原创 归并排序MergeSort
归并排序是用二分法实现的一种快速算法时间复杂度为nlogn 效率上大于n²级别算法,对排序队列进行等分递归等分的数组进行复制操作进行比较达到用空间换时间的目的。思路表现对当前数组进行递归等分知道等分队列为1为止,在等分递归中在对当前数组等分下的两个数据进行依次对标比较。 比如数组[4,6,11,14,18,2,1,9,10,64]等分为[4,6,11,14,18] [2,1,9,10...
2018-04-19 14:36:59 122
原创 希尔排序ShellSort
希尔排序就是利用底层实现的插入排序的变种算法,效率要优于插入排序。设置步幅从高到低进行排序直到步幅为1排序结束。比如长度为10的数组最大步幅为3,则进行0 3;1 4;2 5;...进行比较,其次的步幅为2则进行0 2;1 3;2 4;...的比较直到步幅为1时结束。 public static void sort(Comparable[] arry) { int z...
2018-04-18 14:11:24 96
原创 插入排序InsertionSort
插入排序相较于冒泡排序和选择排序更加的快捷,虽然也是同属于n²级别算法但是在近乎有序的排序问题中,速度极快提供排序的数据顺序度越高速度越快,趋近于O(n)是一种非常实用意义的n²的算法。 算法效率开销在赋值的过程中消耗的很大,在赋值次数中冒泡排序>选择排序>插入排序,插入排序在于每次循环加一的时候当前循环次数之前的数组肯定是有序的。这样只需要对比当前排序值跟前面有序值对比...
2018-04-17 17:05:23 119
原创 选择排序SelectionSort
选择排序同冒泡排序一样都是O(n²)的排序算法,但是相比冒泡排序效率上有进一步的提升。核心思想也是进行双层循环,但是内层循环有保存最小值的临时变量默认为上层循环的值,然后对内层循环挨个比较如果有比临时变量小的(大的),则保存到临时变量中,当内层循环结束调换上层循环当前下表和临时变量中保存下标位置。 public static void sort(Comparable[] arr){...
2018-04-16 17:41:58 100
原创 冒泡排序BubbleSort
冒泡排序是一种时间复杂度为O(n²)的排序算法,一般情况下算是最慢的排序算法了。不过相对比较好理解属于入门级算法。实现思想很简单就是两个双层循环,挨个元素进行比较如果内层循环的位置比外层循环小(大)则进行位置交换,否则向后查找直到循环完毕,下面是一个基础的实现。 public static void sort(Comparable[] array) { for ...
2018-04-13 16:41:34 911
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人