几种排序思路描述

排序目前先记录如下八中排序方法:

排序名称

算法描述

联想记忆

插入排序

具体算法描述如下:

1、从第一个元素开始,该元素可以认为已经被排序。

2、取出下一个元素,在已经排序的元素序列中从后向前扫描。

3、如果该元素(已排序)大于新元素,则该元素移到下一位置。

4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。

5、将新元素插入到该位置中。

6、重复步骤2.

通过34两个步骤,查找新元素位置的同时进行后移记录,这样就省去了一次循环后移记录的嵌套循环。

 

希尔排序

基本思想:

先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组,所有距离为d1的倍数记录放在同一个组中。先在各组内进行直接插入排序;然后取第二个增量d2<d1 重复上述的分组和排序,直至所取得增量dt=1 dt<dt-1< ... < d2<d1,即所有的记录放在同一组中进行直接插入排序为止。

希尔排序也是一种插入排序。是一种加入了步长变量的插入排序。写出插入排序后稍加修改即成希尔排序。

冒泡排序

基本思想:

两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

注释:为什么成为冒泡排序,是因为如果从前面开始进行两两比较则会最先确定最后的一个关键字,如果从后面开始进行两两比较则会最先确定最前面的一个关键字,如果将开始比较的一边作为下面的话,每趟排序后确定的关键字都在上面,所以形象的称之为冒泡排序。

冒泡排序就是从后往前两两比较,n趟后前面有序区就有n个数据

快速排序

基本思想:

快速排序是对冒泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序。

注释:快速排序之所以称之为快速排序可以理解为,由于该算法是从区间两端交替向中间扫描,可以从某种形式上理解为是冒泡排序的两倍速度,所以称之为快速排序法。

 

选择排序

基本思想:

首先在未排序序列中选择最小元素,存放到排序序列的起始位置,然后,再从剩余未排序的序列中选择最小元素,存放到排序序列的起始位置。

 

堆排序

暂不涉及

了解即可

归并排序

归并排序指的是将两个已经排序的序列合并成一个序列的操作。归并排序具体工作的原理如下(假设序列共有n个元素):

1、将序列每相邻的两个数字进行归并操作(merge),形成floorn/2)个序列,排序后每个序列包含两个元素。

2、将上述序列再次归并,形成floorn/4,每个序列包含四个元素。

3、重复步骤2,直到所有的元素排序完毕。

了解即可

基数排序

暂不涉及

了解即可

<!--EndFragment-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
归并排序是一种基于分治思想的排序算法,其过程可以简单概括为以下几个步骤: 1. 分解:将待排序的数组递归地分成两个子数组,直到每个子数组只有一个元素为止。 2. 合并:将已排序的子数组合并成一个新的有序数组。具体地,从左右两个子数组的起始位置开始比较,将较小的元素放入新数组中,直到其中一个子数组中的所有元素都放入新数组中。此时,将另一个子数组中的剩余元素直接放入新数组中即可。 3. 递归:重复步骤1和步骤2,直到所有元素都被排序。 例如,对于一个无序数组[38, 27, 43, 3, 9, 82, 10],其排序过程如下: 1. 分解:将数组分成[38, 27, 43, 3]和[9, 82, 10]两个子数组。 2. 分解:将[38, 27, 43, 3]分成[38, 27]和[43, 3]两个子数组,将[9, 82, 10]分成[9]和[82, 10]两个子数组。 3. 分解:将[38, 27]分成[38]和[27]两个子数组,将[43, 3]分成[43]和[3]两个子数组,将[82, 10]分成[82]和[10]两个子数组。 4. 合并:将[38]和[27]合并成[27, 38],将[43]和[3]合并成[3, 43],将[82]和[10]合并成[10, 82]。 5. 合并:将[27, 38]和[3, 43]合并成[3, 27, 38, 43],将[9]和[10, 82]合并成[9, 10, 82]。 6. 合并:将[3, 27, 38, 43]和[9, 10, 82]合并成[3, 9, 10, 27, 38, 43, 82],排序完成。 因此,归并排序法的核心思路是将问题分解成小问题,然后逐步解决这些小问题,并将结果合并起来。归并排序法的时间复杂度为O(nlogn),因此在大数据量的情况下,其效率远高于其他常见的排序算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值