java排序算法
总结各种排序算法
Kevin_cai09
无情的bug maker
展开
-
冒泡排序和基数排序
一,冒泡排序算法思路冒泡排序的原理可以顾名思义:把每个数据看成一个气泡,按初始顺序自底向上依次对两两气泡进行比较,对上重下轻的气泡交换顺序(这里用气泡轻、重表示数据大、小),保证轻的气泡总能浮在重的气泡上面,直到最轻的气泡浮到最上面;保持最后浮出的气泡不变,对余下气泡循环上述步骤,直到所有气泡从轻到重排列完毕。算法分析稳定排序时间复杂度;乱序:O(N^2),有序:O(N)空间复杂度...原创 2019-04-18 15:27:56 · 1298 阅读 · 7 评论 -
桶排序和计数排序
一,桶排序1.算法原理1.桶排序核心思想就是将要排序的数据分到几个有序的桶里,每个通在分别进行排序,每个桶排序完成后再把每个桶里的数据按照顺序依次取出,组成新的序列,该序列就是排好序的序列。类似归并排序中中的分治思想。2.算法分析时间复杂度接近O(N),所以说桶排序是线性时间排序空间复杂度:桶排序中,需要创建M个桶的额外空间,以及N个元素的额外空间,所以桶排序的空间复杂度为 O...原创 2019-04-17 13:51:30 · 5242 阅读 · 0 评论 -
归并排序和快速排序
一,归并排序归并排序算法实现算法思路:如果要排序一个数组,我们先从数组中间把数组分成左数组和右数组两部分,分别对左右数组进行排序,然后将排序好的数组合并成结果数组,排序就完成了,最后只需将结果数组复制回原数组即可。核心思想 ----- 分治思想分治也即是分而治之,将一个大问题分解为小的子问题来解决。分治算法一般都是用递归来实现的。分治是一种解决问题的处理思想,递归是一种编程技巧。归并...原创 2019-04-16 15:25:51 · 3389 阅读 · 0 评论 -
堆排序
堆排序1.基本概念堆: 堆是一棵完全二叉树,这是他的结构性最大堆: 每个节点的值都大于或等于其左右孩子节点的值,这是他的堆序性最小堆: 每个节点的值都小于或等于其左右孩子节点的值,这是他的堆序性2.基本思想堆排序就是把需要排序的序列构建最大堆或者最小堆,此时,最大值或者最小值就在堆顶位置,然后把该元素放于最后,对剩下的序列再一次构造堆,知道完成排序堆排序的时间复杂度为 O(nlogn...原创 2019-04-13 17:13:19 · 295 阅读 · 0 评论 -
插入排序,希尔排序
插入排序插入排序是一种比较排序算法核心思想在每次遍历序列过程中,从序列中取出一个元素插入到有序序列中,形成新的有序序列,重复该过程,直到遍历完成,形成新的有序序列。特点:时间复杂度分析:O(N^2),如果序列在排序前已经是有序序列,则为O(N)空间复杂度分析:O(1)数据量较少时效率高。插入排序适合数据量少的情况算法的实际运行效率优于选择排序和冒泡排序。稳定排序 — 插入排序...原创 2019-04-09 15:49:50 · 508 阅读 · 0 评论 -
java排序算法总结
java排序算法总结排序,这是一个很古老但是又很经典的问题,世界上有很多中优秀排序算法的实现,在这里,我总结了其他比较常用的几种排序算法1.java排序算法一览冒泡排序和基数排序桶排序和计数排序归并排序和快速排序堆排序插入排序和希尔排序2.分类3.比较1.时间复杂度比较算法乱序时间复杂度有序时间复杂度插入排序O(N^2)O(N)希尔排序...原创 2019-04-19 12:30:20 · 3101 阅读 · 0 评论