冒泡排序算是排序算法里面的一种较为简单的算法,也是我接触的第一种排序算法,有升序与降序之分,如果面试的时候面试官问道这个题目,一定要问清楚是升序还是降序,这样会给你加分。 下面,我以升序来讲一下它的运作。   1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3、针对所有的元...

插入排序原理很简单,讲一组数据分成两组,我分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。   为了排序方便,我们一般将数据第一个元素视为有序组,其他均为待插入组。   下面以升序为例进行...

选择类排序算法 1、选择排序算法 思想:首先找到数组中最小的那个元素,其次将它和数组中的第一个元素交换(如果第一个元素是最小的,那么和它自己进行交换)。再次,再剩下的元素中找到最小的元素,将它与数组中的第二个元素进行位置交换。如此往复,直到整个数组排序。这就叫选择排序。 时间复杂度 o(n*n) 模板: 测试结果 2、堆排序算法   堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择...

排序算法总结(C++)

排序

  

2019-06-19 05:28:56

算法复杂度 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。  一:冒泡排序 经典的排序算法,通过依次比较相邻两个元素之间的大小,从头...

八大排序算法之插入排序

排序

  

2019-06-26 18:15:48

在数据结构中,排序算法是处理数据经常遇到的,而排序又分为内排序和外排序。内排序是指排序期间,数据放在内存进行排序。外排序是指所要处理的数据量太大,不能一次放在内存中,排序过程中需要不断进行内外存之间移动的排序。选择合适的排序可以帮我们减少一些时间或者空间上不可避免的开销。 我们所说的八大排序算法,都是属于内排序。 插入排序常用的有直接插入排序和希尔排序。排序算法的基本思想是:每一步都待排序的对象,...

八大排序算法之交换排序

排序

  

2019-06-28 02:28:47

在之前两篇文章中,我们学习了插入排序和选择排序,八大算法之插入排序,八大算法之选择排序,这篇文章,我们来了解一下交换排序。 常用的交换排序有冒泡排序和快速排序,主要思想就是交换。 1.冒泡排序 基本思想:每相邻两个数比较,若大小与要排序顺序不同,则交换。 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;) 对序列当中剩下的n...

题目:输入三个整数x,y,z,请把这三个数从小到大输出。 方法1:使用java提供的工具类Arrays的排序函数sort(); 控制台输出: 方法2:if判断比较     总结:1.当排序的数字较多时,if判断会显得很麻烦;            2.java提供的工具类Arrays比较实用不仅提供了排序的sort()...

希尔排序(图解+代码)

排序

  

2019-07-06 08:45:46

希尔排序 如图: 我们来看下希尔排序的基本步骤,在此我们选择增量gap=length/2,缩小增量继续以gap = gap/2的方式,这种增量选择我们可以用一个序列来表示,{n/2,(n/2)/2...1},称为增量序列。 图中有10个数,所以第一趟增量就设为10/2=5;看图中第一趟排序,颜色相同为一组,每组进行比较,可以看到,这十个数被分成了五组    ...

排序算法收录

排序

  

2019-07-13 21:36:36

  基础语言Python 1 选择排序 思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 操作方法: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换; 第二趟,从第二个记录开始的n-1 个记录中再选出关键码...

八大排序

排序

  

2019-07-22 11:49:17

排序算法总结 排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*logN) 基数排序 O(d(n+r))     三. 插入排序(Insertion Sort) 基本思想: 在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数...

[转]八大排序算法

排序

  

2019-07-26 00:28:16

版权声明:   本文所有内容均转自https://blog.csdn.net/justloveyou_/article/details/72730597 摘要:   所谓排序,就是根据排序码的递增或者递减顺序把数据元素依次排列起来,使一组任意排列的元素变为一组按其排序码线性有序的元素。本文将介绍八种最为经典常用的内部排序算法的基本思想与实现,包括插入排序(直接插入排序,希尔排序)、选择排序(直接选...

排序

排序

  

2019-08-11 05:27:32

目录 冒泡排序 选择排序 插入排序 快速排序 冒泡排序(时间复杂度, 空间复杂度,稳定) 选择排序(时间复杂度, 空间复杂度,不稳定) 插入排序(时间复杂度, 空间复杂度,稳定) 快速排序(时间复杂度, 空间复杂度,不稳定) 希尔排序(时间复杂度约为) 希尔排序是插入排序的进阶版, 普通插入排序的g=1, 而希尔排序g=1,4,7,10...    ...

[UESTC SC T1] 最大疯子树

排序

  

2019-08-15 00:44:54

题面:   题目描述比较清楚 首先简化情况,考虑仅仅为一条链的情况 那么满足条件的链一定是这样的: 那么这条链的两端一定是大于等于中间的 就形成一个“沟” 接下来我们假设再有一条满足条件的链经过其中一点 那么这样一个东西就可以用一个三维的“坑”或者是“盆”来形象的描述 那么这道题就是从一棵树上选择一个子图,使得这个子...

排序:插入排序

排序

  

2019-08-16 17:37:05

时间复杂度 最好情况:数组本身有序,只需进行比较O(n) 最坏情况:数组逆序,O(n^2) 思想:将一个待排序的数组插入到已排序的数组中 开始时,数组第一个元素为有序数组,剩下为待排序数组 若待排序数组的第一个a[i]小于有序数组的最后一个a[i-1] 则将待排序数组的第一个元素插入到有序数组中 插入步骤: 将有序数组依次(j=i-1~0)与待排序数组第一个元素a[i]进行比较 若有序数组中的元素...

基础算法:希尔排序

算法  排序  希尔排序

  

2019-06-07 16:20:06

希尔排序,也称递减增量排序算法,1959年Shell发明。是插入排序的一种高速而稳定的改进版本。 希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 1、基本思想 (1)设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子...