八大排序
文章平均质量分 85
晨初听雨
这个作者很懒,什么都没留下…
展开
-
冒泡排序
算法描述: 冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。以下面5个无序的数据为例:40 8 15 18 12 (文中仅细化了第一趟...原创 2018-06-18 22:08:30 · 1018 阅读 · 0 评论 -
直接选择排序
简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。在算法实现时,每一趟确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。其实我们很容易发现,在还未完全确定当前最小元素之前,这些交换都是无意义的。我们可以通过设置一个变量min,每一次比较仅存储较小元素的数...原创 2018-06-20 23:14:12 · 4541 阅读 · 0 评论 -
直接插入排序
直接插入排序算法思想:当你要排第i个数时,我们的前i-1个数是有序的,你只需将第i个数插入前i-1个数中。 举个例子,我们先假设第一个数是排好序的,然后第二个数和第一个数进行比较,,如果第二个数比第一个数小,那么就把第一个数向后移,将第二个数放在第一个数的位置上,反之如果第二个数比第一个数大,那么就不需要交换。实质上就是a[i]和a[i-1]进行比较,如果a[i]>a[...原创 2018-06-23 20:21:25 · 237 阅读 · 0 评论 -
八大排序时间复杂度,稳定性总结
八大排序的稳定性,时间复杂度和空间复杂度总结: 我们比较时间复杂度函数的情况: 所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。...原创 2018-10-18 13:08:07 · 1586 阅读 · 1 评论 -
图解快速排序
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。算法思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素)称为基准元素;2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对于基准元素左边的元素进行上述步骤的递归调用进行排序,基准元素右边的元素也是如此。你可以把快速排序...原创 2018-10-18 14:38:43 · 581 阅读 · 1 评论 -
Shell(希尔)排序
shell排序算法描述:我们简单处理增量序列:增量序列d = {n/2 ,n/4, n/8 …..1} n为要排序数的个数 ,即:先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d。对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序...原创 2018-10-18 17:08:54 · 399 阅读 · 0 评论 -
归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。基本思路: 先递归的把数组划分为两个子数组,一直递归到数组中只有一个元素,然后再调用函数把两个子数组排好序。再依...原创 2018-10-20 13:15:12 · 348 阅读 · 0 评论 -
堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结...原创 2018-07-22 12:36:54 · 270 阅读 · 0 评论