建英语网站首页,中小企业网络拓扑图,网站中转页,重庆做网站changeke排序的本质、数据类型及算法选择 一、排序的本质二、排序的数据类型三、排序算法的选择依据 前两天老金写了篇
“十大排序简介”#xff0c;有点意犹未尽#xff0c;这一回老金想把排序连根拔起#xff0c;从排序的本质说道说道。 一、排序的本质
从字面上理解#xff0c… 排序的本质、数据类型及算法选择 一、排序的本质二、排序的数据类型三、排序算法的选择依据 前两天老金写了篇
“十大排序简介”有点意犹未尽这一回老金想把排序连根拔起从排序的本质说道说道。 一、排序的本质
从字面上理解排序就是把一堆乱糟糟的东西按照一定的规则排得整整齐齐使无序变有序。 人喜欢有序但大自然是喜欢无序的。 排序一词的英文是sort这个词本来是“分类”的意思。分类是将相似的东西分到一起表面上看和排序貌似没什么关系实际上大多数分类都是有序的。 比如东汉末年分三国为什么人们都是说魏蜀吴而不说蜀吴魏 因为有了人世间的一切都有了价有了价便是有了等级。 所谓的排序本质上就是划分等级。 对于编程来讲排序就是将数字按从小到大的顺序排列。 没错无论排什么最终本质上排的都是数字。 如果把数字看成长短不一的仙人板板那么排序前 排序后 是不是赏心悦目好多
二、排序的数据类型
常见的用于排序的数据类型有 1. 数字排序 不要多说不要多问。这是最基本的排序类型包括整数、浮点数等。 2. 字符串排序 按字母顺序对单词或句子进行排序看着是字母实际上排的是ASCII码而ASCII码就是数字。 3. 日期和时间排序 要将日期和时间转换为可比较的数值形式然后进行排序。 4. 多维数据排序 包含多个属性的数据可能需要根据一个或多个属性进行排序。例如学生的成绩可以以总成绩为主关键字、以单科成绩为次关键字一起排序。 5. 特殊类型数据排序 如地理坐标经纬度、版本号如软件版本号、IP地址等它们也有特定的排序规则。
三、排序算法的选择依据
排序算法一上来就10种为啥要这么多呢因为没有一种万能的算法能够解决所有问题。 软件工程先天具有复杂性计算机的世界里有一句名言 No Silver Bullet in Software Engineering。 幻想一炮就能解决所有问题是不可能的。 排序算法的选择在实际应用中至关重要因为它直接影响到程序的性能和效率。选择依据如下 1. 数据规模 如果数据规模很小比如几十个元素可以任性一点选择简单好写的排序算法比如冒泡排序、选择排序、插入排序。如果数据规模很大比如几万、几十万甚至更多个元素就应选择效率更高的算法比如快速排序、归并排序。 2. 算法稳定性 有时即便两个元素完全相同排序时也需要保持其原始顺序这个就叫排序算法的稳定性。比如800对新人的集体婚礼男方有790人都叫王小二现在按人名排序出场如果你把这790个新郎官的次序搞乱了那妹子们可要几家欢喜几家愁了。如果新娘里有女侠郭芙蓉势必送你一招“排山倒海”。
稳定的排序算法有冒泡排序、插入排序、归并排序、计数排序、桶排序、基数排序。 3. 空间复杂度 有些嵌入式系统的内存空间有限应选择空间复杂度低的算法比如快速排序、堆排序或插入排序。 如智能手表为了降低成本、减小体积内存就比较有限。在智能手表中需要按时间顺序对心率、步数、睡眠质量等健康数据进行排序这时候就可以考虑空间复杂度低的排序算法。 4. 数据有序性 如果数据已经有一定的顺序那插入排序和希尔排序就是比较好的选择。它们能够利用已有的有序序列减少比较和交换的次数从而提高效率。 如果数据完全无序可以选择那些不依赖于数据初始状态的排序算法比如快速排序和归并排序。