uu快3充值_uu快3回血_新平台

常见排序算法及对应的时间复杂度和空间复杂度

时间:2020-02-11 20:36:26 出处:uu快3充值_uu快3回血_新平台

排序算法经过了很长时间的演变,产生了所以种不同的最好的妙招。对于初学者来说,对它们进行派发便于理解记忆显得一阵一阵要。每段算法完整篇 都是它特定的使用场合,这么通用。否则,亲戚亲戚朋友很有必要对所有常见的排序算法进行归纳。

排序大的分类前要分为五种:内排序和外排序。在排序过程中,完整篇 记录存装进内存,则称为内排序,曾经 排序过程中前要使用外存,则称为外排序。下面讲的排序完整篇 都是属于内排序。

image.png

java实现

java实现

image.png

基本思想:

堆排序是五种树形选折 排序,是对直接选折 排序的有效改进。

基本思想:归并(Merge)排序法是将另另一一八个(或另另一一八个以上)有序表合并成另另一一八个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。否则再把有序子序列合并为整体有序序列。

实例

:

image.png

基本思想:在要排序的一组数中,对当前还未排好序的范围内的完整篇 数,自上而下对相邻的另另一一八个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

实例

:

基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。否则,从最低位结束了了英语 ,依次进行一次排序。曾经 从最低位排序总爱到最高位排序完成曾经 ,数列就变成另另一一八个有序序列。

实例

图片

基本思想:选折 另另一一八个基准元素,通常选折 第另另一一八个元素曾经 最后另另一一八个元素,通过一趟扫描,将待排序列分成两每段,一每段比基准元素小,一每段大于等于基准元素,此时基准元素在其排好序后的正确位置,否则再用同样的最好的妙招递归地排序划分的两每段。

实例:

基本思想:每步将另另一一八个待排序的记录,按其顺序码大小插入到前面曾经 排序的字序列的大概 位置(从后向前找到大概 位置后),直到完整篇 插入排序完为止。

实例

交换,从堆中踢出最大数:

:

基本思想:二分法插入排序的思想和直接插入一样,所以找大概 的插入位置的最好的妙招不同,这里是按二分法找到大概 的位置,前要减少比较的次数。

实例:

堆的定义下:具有n个元素的序列 (h1,h2,…,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1) (i=1,2,…,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义前要看出,堆顶元素(即第另另一一八个元素)必为最大项(大顶堆)。完整篇 二叉树前要很直观地表示堆的行态。堆顶为根,其它为左子树、右子树。

思想:初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为另另一一八个堆,这时堆的根节点的数最大。否则将根节点与堆的最后另另一一八个节点交换。否则对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有另另一一八个节点的堆,并对它们作交换,最后得到有n个节点的有序序列。从算法描述来看,堆排序前要另另一一八个过程,一是建立堆,二是堆顶与堆的最后另另一一八个元素交换位置。所以堆排序有另另一一八个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。

image.png

image.png

image.png

文章参考:https://blog.csdn.net/gane_cheng/article/details/52652705

image.png

image.png

基本思想:在要排序的一组数中,选出最小的另另一一八个数与第另另一一八个位置的数交换;否则在剩下的数当中再找最小的与第八个位置的数交换,这么循环到倒数第八个数和最后另另一一八个数比较为止。

实例:

image.png

image.png

内排序有前要分为以下几类:

  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。

  (2)、选折 排序:直接选折 排序、堆排序。

  (3)、交换排序:冒泡排序、快速排序。

  (4)、归并排序

  (5)、基数排序

初始序列:46,79,56,38,40,84

建堆:

[TOC]

1、插入排序

1.1直接插入排序(从后向前找到大概 位置后插入)

1.2 二分法插入排序

1.3 希尔排序

2、选折 排序

2.1 直接选折 排序

2.2 堆排序

3、交换排序

3.1 冒泡排序

3.2快速排序

4、 归并排序

5、基数排序

基本思想:先取另另一一八个小于n的整数d1作为第另另一一八个增量,把文件的完整篇 记录分成d另另一一八个组。所有距离为d1的倍数的记录装进同另另一一八个组中。先在各组内进行直接插入排序;否则,取第八个增量d2

java代码:

实例

热门

热门标签