数据结构-排序算法-简介篇

简介: 数据结构-排序算法-简介篇

正文


今天我们讨论的问题是,我们数据结构里面的知识,排序算法。排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。那么,下面我们看一看我们排序算法的分类,如下图:


13.jpg根据上图,我们知道:内部排序算法:冒泡排序、快速排序、直接择排序、直接插入排序、希尔排序、归并排序、堆排序其中冒泡排序和快速排序属于交换排序,直接插入排序和希尔排序属于插入排序外部排序算法:计数排序、基数排序、桶排序等

基本概念:

每一种算法,都会有自己的稳定性、时间复杂度以及空间复杂度

稳定性:如果i=j,排序前i在j的前面,排序后i仍然在j的前面,即相等的两个数字的相对位置在排序前后不变,则该算法是稳定的,否则不稳定。大家一定会有疑问,稳定性有什么用呢,是这样的,排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,前一个键排序的结果可以为后一个键排序所用。可能比较难理解,这里再举个例子方便理解,比如在基数排序中,先将低位排序,再逐次按高位排序,稳定的话就可以保证排序后低位元素的顺序在高位相同时是不会改变的。

时间复杂度:指执行算法所需要的工作量,即对待排序数据的总操作次数,我们用它来描述算法的运行时间。空间复杂度:指执行算法所需的内存空间。


14.jpg


那么,接下来,我们分别看一下我们每一种排序算法的实现的原理。



相关文章
|
2天前
|
机器学习/深度学习 存储 算法
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
8 1
|
2天前
|
算法 关系型数据库 C语言
卡尔曼滤波简介+ 算法实现代码(转)
卡尔曼滤波简介+ 算法实现代码(转)
12 4
|
3天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(二)
深度学习算法简介(二)
|
3天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(一)
深度学习算法简介(一)
|
5天前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
11 0
|
5天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
16 0
|
12天前
|
存储 机器学习/深度学习 算法
|
12天前
|
机器学习/深度学习 监控 算法
|
16天前
|
存储 算法 Python
程序设计的艺术:算法与数据结构的魅力
程序设计的艺术:算法与数据结构的魅力
8 0
|
16天前
|
存储 算法
数据结构开篇(普普通通浅浅聊数据结构)什么是数据结构 、什么是算法、重要性、如何学好数据结构呢
数据结构开篇(普普通通浅浅聊数据结构)什么是数据结构 、什么是算法、重要性、如何学好数据结构呢