记录一下几种排序: One:桶排序 桶排序:例如需要排序数的范围是0~n,那你则需要申请n+1一个变量,也就是说要写成int a[n+1]。应为我们需要用n+1个“桶”来存储0~n每一个数出现的次数。 即便只给你5个数进行排序(例如这五个数是1、2100000、12358、6546 ...
冒泡排序: 快速排序: 选择排序:在要排序的一组数中,选出最小的一个数与第一个位置的数交换 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 插入排序:已排序 未排序两部分,从已排序后面找一个值,插入到已排序,依次下去。。。 希尔排序: 归并排序:归并 Merge 排序法是将两个 或两个以上 有序表合并成一个新的有序表,即把待排序序列分为若干个子序列, ...
2019-03-08 23:33 0 623 推荐指数:
记录一下几种排序: One:桶排序 桶排序:例如需要排序数的范围是0~n,那你则需要申请n+1一个变量,也就是说要写成int a[n+1]。应为我们需要用n+1个“桶”来存储0~n每一个数出现的次数。 即便只给你5个数进行排序(例如这五个数是1、2100000、12358、6546 ...
桶排序是一种效率很高的排序算法,它的时间复杂度为O(n),但桶排序有一定的限制,只有当待排序序列的元素为0到某一确定取值范围的整数时才适用,典型的例子比如成绩的排序等。 算法思想: 设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍历待排序序列 ...
前一阵子一直在写排序的系列文章,最近因为一些事情耽搁了几天,也穿插了几篇其他类别的随笔。今天还是回到排序上面来,善始善终,呵呵。今天要介绍的也是一种效率很高的排序——堆排序思想堆排序,顾名思义,就是基于堆。因此先来介绍一下堆的概念。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要 ...
今天继续介绍排序算法系列的第二讲,选择排序。选择排序也是一种常见的排序方法,非常简单。废话不说,来看看吧。 思想 还是先来看看选择排序的思想。选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推 ...
前言 桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后依次把各个桶中的记录列出来记得到有序序列。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值 ...
选择排序的执行过程为每次循环遍历数组找出最小(或最大)的数,将其放在数组的有序数列的最后面,每次第i次遍历查找要执行N-i个单位时间,然后要执行N次,故时间复杂度为O(N^2),很简单,比较适合较小的数列的排序。 选择排序的代码selection_sort.cpp会在下面的完整 ...
要点 冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 算法思想 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复 ...
要点 基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。 它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。 不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为: R {50, 123, 543 ...