随笔分类 -  八大排序算法

摘要:归并排序是一个典型的基于分治的递归算法。它不断地将原数组分成大小相等的两个子数组(可能相差1),最终当划分的子数组大小为1时,将划分的有序子数组组合并成一个更大的有序数组。 算法分析: 分,也就是把原数组划分成两个子数组的过程。 治,它将两个有序数组合并成一个更大的有序数组。 它将数组平均分成两部分 阅读全文
posted @ 2019-11-04 14:39 MrHH 阅读(335) 评论(0) 推荐(0)
摘要:算法步骤: 1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最佳的选择方法是在待排序数组中随机选取一个作为基准),成为基准元素。 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边。 3.对左右两个分区重复以上步骤直到所有元素都是有序的。 时间复杂度:快速排 阅读全文
posted @ 2019-11-02 17:49 MrHH 阅读(617) 评论(0) 推荐(0)
摘要:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成了一个有序序列。 算法实现: 阅读全文
posted @ 2019-10-31 15:18 MrHH 阅读(395) 评论(0) 推荐(0)
摘要:基本思想:先将整个待排序的记录序列分割成若干个子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录依次进行直接插入排序。 1)操作方法:选择一个增量序列t1,t2,...,tk,其中ti>tj,tk=1; 2)按增量序列个数k,对序列进行k趟排序; 3)每趟排序,根据对应的增 阅读全文
posted @ 2019-10-30 11:32 MrHH 阅读(254) 评论(0) 推荐(0)
摘要:桶排序的基本思想:它就是把数组arr[]划分为N个大小相同的子区间(桶),每个子区间各自排序,最后合并。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。 步骤: 1.找出待排序数组中的最大值max、最小值min; 2.我们使用动态数组arraylist作为桶,桶里放的元 阅读全文
posted @ 2019-10-28 15:12 MrHH 阅读(262) 评论(0) 推荐(0)
摘要:插入排序是一种稳定的排序算法。 基本思想: 把N个待排序元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有N-1个元素;每次从无序表中取出一个元素,将它插入到有序表中,使之成为新的有序表,重复N-1次完成整个排序过程。 算法分析: 1)从序列第一个元素开始,该元素可以认为已经被排 阅读全文
posted @ 2019-10-13 11:12 MrHH 阅读(200) 评论(0) 推荐(0)
摘要:<<<<<<<<<<<< >>>>>>>>>>>>>>>> 选择排序是一种简单直观的排序算法,而且它不会占用额外的内存空间。 原理:遍历元素找到一个最小或最大的元素,把它放在第一个位置,然后再从剩余的元素中找到最小或最大的元素,把它放在第二个位置,依次下去,直到完成排序。 时间复杂度为O(n2) 思 阅读全文
posted @ 2019-10-13 10:51 MrHH 阅读(266) 评论(0) 推荐(0)
摘要:冒泡排序,即对相邻的元素进行两两比较,两个元素顺序相反的话,就进行交换;这样每经过一次排序就会将最小的或最大的元素“冒”到顶端,最终完成排序。 具体步骤:1)比较前后相邻的两个数据,如果前面的数据大于后面对数据,就将这两个数据进行交换; 2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大一 阅读全文
posted @ 2019-10-12 14:11 MrHH 阅读(220) 评论(0) 推荐(0)