| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】排序 (一) -> 正文阅读 |
|
[数据结构与算法]【数据结构】排序 (一) |
本文主要选取了桶排序,冒泡排序,以及快速排序。当然还有其他几种,可以根据需要进行学习。 一、桶排序 1、什么是桶排序? 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。 2、为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量;使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中。同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。 3、根据上面的定义,我们来探究一下: a.什么时候排序最慢?当输入的数据被分配到了同一个桶中。 b.什么时候排序最快?当输入的数据可以均匀的分配到每一个桶中。 4、算法描述 a.设置一个定量的数组当作空桶; b.遍历输入数据,并且把数据一个一个放到对应的桶里去; c.对每个不是空的桶进行排序; d.从不是空的桶里把排好序的数据拼接起来。 5、图示桶排序 5、图示算法 在桶中的元素分布: 然后,元素在每个桶中排序: 6、代码实现(将5 3 5 2 8按照从小到大顺序输出)
二、冒泡排序 1、什么是冒泡排序? 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换, 2、算法描述 a.比较相邻的元素。如果第一个比第二个大,就交换它们两个; 3、图示算法() ?4、代码实现(将8 100 50 22 15 6 1 1000 999 0按照从小到大顺序输出?)
三、快速排序 1、什么是快速排序? 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 2、算法描述 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下: 1.从数列中挑出一个元素,称为 “基准”(pivot); 4、图示算法 ?5、代码实现(将6 1 2 7 9 3 4 5 10 8按照从小到大顺序输出)
四、三种排序的区别 ?由上表可见,桶排序是最快的,它的时间复杂度是 O(n+k);冒泡排序是 O(n2);快速排序是 O(nlog2n)。但是桶排序是最占空间的,它的空间复杂度是O(n+k),冒泡排序是 O(1);快速排序是 O(1)。 可以根据应用选择不同的排序,快速排序在实际应用使用较多。 如果需要了解更多排序的相关知识,可以参考 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/29 2:45:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |