数组排序的基本介绍|学习笔记

简介: 这章重点介绍排序和查找,这里排序和查找都是针对数组的。

开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:数组排序的基本介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9645


数组排序的基本介绍

 

内容介绍

一、排序的介绍

二、冒泡排序

 

这章重点介绍排序和查找,这里排序和查找都是针对数组的。

 

一、排序的介绍

排序是将一组数据,依指定的顺序进行排列的过程。

排序分为两大类,内部排序和外部排序法。

1、内部排序

指将需要处理的所有数据都加载到内部存储器中进行排序,也就是说排序工作不需要借助文件,一次性把所有数据都放到内存中去进行排序就可以。这种一般来讲数据量都比较小,会使用到内部排序。比如常见的交换式排序法、选择式排序法和插入式排序法都是内部排序。

2、外部排序法

数据量过大,无法全部加载到内存中,包括(外部排序法和直接合并排序法)。比如说要对一千亿或者一万亿个数据进行排序,而数据一次性不能加载到内存,因为内存不够,则需要借助外部存储进行排序,就会用文件进行合并排序法,例如先调一部分的数据先进行排序好,再调一部分的数据再排好,最后将排好的数据合并起来一次性输入到文件里面保存起来,这时就会用到外部排序。内部排序和外部排序法最大的区别就是能不能一次性的把文件都加载到内存中

3、交换式排序法

交换式排序属于内部排序法,是运用数据值比较后,依据判断规则对数据位置进行交换,以达到排序的目的。

交换式排序法又可分为两种:

(1)冒泡排序法(Bubble sort)

(2)快速排序法(Quick sort)

这两种都是交换式排序,因为他们都是把数据加载进去后,然后根据大小的不一样进行排序。交互式排序用到比较多的就是冒泡排序法快速排序法冒泡排序法是后面要重点讲解的。

 

二、冒泡排序

交换式排序法-冒泡排序法

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(这个属于优化)

这里说明有点不好理解,下面进行通俗易懂的讲解,如下图演示了一个冒泡过程的例子:

最左边一列是一个数组,第一趟结束后把最大的90排在了第一,第二趟结束了就把第二个大的88排到了第二位,以此类推到第六趟整个数组就进行了一个从大到小的有序排列。

image.png

但这个图还是不能够说明冒泡排序的过程,为了更加理解这个案例,下面再进行举例来说明插入法,用这个案例来详细的介绍冒泡排序到底是怎么样。

冒泡排序案例:24, 69, 80, 57, 13使用冒泡排序法将其排成一个从小到大的有序数列。

接下面会画一下冒泡排序的示意图来具体理解冒泡排序法。这里要注意如果不理解冒泡排序是什么规则的话,那代码肯定是写不出来的,而编程一直都在做同一件事情,就是把有的思想转写成代码,如果在本身没有编程的思路,那么是不可能写出代码的。写代码主要是语法,语法也不难,关键要有思路。

相关文章
|
数据可视化 搜索推荐 数据挖掘
数据分析案例-顾客购物数据可视化分析
数据分析案例-顾客购物数据可视化分析
765 0
|
弹性计算 DataWorks 关系型数据库
DataWorks操作报错合集之DataX在执行过程中接收到了意外的信号15,导致进程被终止,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
币圈期现套利策略交易软件开发合约源码定制详情
class Arbitrage: def __init__(self, contracts): self.contracts = contracts self.positions = [] self.current_price = {}
|
关系型数据库 数据库 Docker
使用 SQLStudio 进行数据库管理并通过 Docker Compose 进行部署
在现代软件开发中,数据库管理是一个至关重要的环节。SQLStudio 是一个强大的工具,可以帮助开发人员轻松管理数据库,现在改名成SQLynx,我们用的是旧的镜像,本文还是用SQLStudio这个名称。同时,使用 Docker Compose 可以简化应用程序的部署过程,使整个开发流程更加高效和可靠。最近了看到有合作伙伴在内网使用SQLStudio,我们这篇文章就介绍 SQLStudio 的基本特点,并指导如何使用 Docker Compose 部署应用程序。
1032 2
使用 SQLStudio 进行数据库管理并通过 Docker Compose 进行部署
|
API C#
HandyControl新手引导
HandyControl新手引导
617 0
HandyControl新手引导
|
前端开发 安全 JavaScript
react总结之axios(解决跨域)
react总结之axios(解决跨域)
|
Java Maven
IDEA Maven 优先使用本地依赖包
IDEA Maven 优先使用本地依赖包
863 0
|
存储 算法
带你读《存储漫谈:Ceph原理与实践》——3.1.6 Burst I/O
带你读《存储漫谈:Ceph原理与实践》——3.1.6 Burst I/O
|
定位技术 API C#
【EasyAR学习】平面追踪、表面跟踪和运动跟踪、稀疏空间地图
Easy平面追踪、表面跟踪和运动跟踪、稀疏空间地图解析与实战
1333 0
|
算法 内存技术
搜索与图论-最小生成树(Prim 算法和 Kruskal 算法)
搜索与图论-最小生成树(Prim 算法和 Kruskal 算法)