数据结构(七)排序---排序知识点总结

回顾:排序分类

(一)插入类

直接插入排序

折半插入排序

希尔排序

本质还是插入排序

(二)交换类

冒泡排序

快速排序

(三)选择类

简单选择排序

堆排序

(四)归并类

归并排序

一:复杂度总结

(一).时间复杂度

1.平均情况下:快些排队(快希排堆)

在平均情况下,快速排序,希尔排序,归并排序,堆排序的时间复杂度都是O(nlog2n),其他都是O(n2)

2.最坏情况下

快速排序的时间复杂度为O(n2),其他的和平均情况下相同

(二).空间复杂度

快速排序是O(log2n),归并排序是O(n),基数排序是O(rd),其他都是O(1)

(三).其他:容易插,起的好

直接插入排序和冒泡排序对于所谓的:直接插和起的好(指的是初始化序列已经有序)。其复杂度变为O(n)

二:稳定性总结

就是说在我们未排序之前,数据中可能已经有部分数据是相同的,若是我们排序后,这些相同的数据的先后顺序没有改变,那么就是稳定的,若是我们在排序中,将相同的数据的顺序进行了修改(虽然没啥影响,但是做了多余的操作,而且说明我们的操作对数据的影响较大,不稳定),那么就是不稳定的

稳定性定义

(一)快些选队:不稳定

快速排序,希尔排序,简单选择排序,堆排序都是不稳定排序,其他都是稳定排序

三:其他细节:排序原理相关

(一)经过一趟排序,能够保证一个关键字达到最终位置,这样的排序是交换类:(冒泡,快速)和选择类:(简单排序,堆)

(二)排序算法关键字比较次数和原始序列无关---简单选择排序和折半插入排序

(三)排序算法的排序趟数和原始序列有关---交换类的排序

四:其他结论

(一)借助于“比较”进行排序的算法,在最坏情况下的时间复杂度至少为O(nlog2n)

原文地址:https://www.cnblogs.com/ssyfj/p/9691665.html

时间: 2024-10-31 15:55:46

数据结构(七)排序---排序知识点总结的相关文章

SDUT 3404 数据结构实验之排序七:选课名单.!?

数据结构实验之排序七:选课名单 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 随着学校规模的扩大,学生人数急剧增加,选课名单的输出也成为一个繁重的任务,我校目前有在校生3万多名,两千多门课程,请根据给定的学生选课清单输出每门课的选课学生名单. Input 输入第一行给出两个正整数N( N ≤ 35000)和M(M ≤ 2000),其中N是全校学生总数,M是课程总数,随后给出N行,每行包括

模板化的七种排序算法,适用于T* vector<T>以及list<T>

最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板纯属于偷懒,更方便于测试代码的有效性,等代码写完也懒得去改了.下面开始介绍这段代码,有什么不对的地方欢迎前来指正. 一共写了七种排序,插入排序InsertSort.堆排序HeapSort.快速排序QuickSort.合并排序MergeSort,计数排序CountingSort,基数排序RadixSo

七种排序算法的实现和总结

最近把七种排序算法集中在一起写了一遍. 注释里有比较详细的说明. 1 /*排序算法大集合**/ 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 6 //------------------快速排序------------------// 7 /* 8 核心: 9 如果你知道多少人该站你前面,多少人站你后面,你一定知道你该站哪个位置. 10 算法: 11 1.选取分界数,参考这个分界数,

17. 蛤蟆的数据结构进阶十七排序实现之归并排序

17. 蛤蟆的数据结构进阶十七排序实现之归并排序 本篇名言:"人生不是一种享乐 ,而是一桩十分沉重的工作.-- 列夫 . 托尔斯泰" 我们来看下归并排序. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47790163 1.  归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个

数据结构:拓扑排序之 确定比赛名词

[BestCoder Round #3 来了!]8月3号19:00~21:00(赛前30分钟停止注册比赛) 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11642    Accepted Submission(s): 4634 Problem Description 有 N个比赛队(1<=N<=500),编号依次为1,

数据结构 - 简单选择排序(simple selection sort) 详解 及 代码(C++)

数据结构 - 简单选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601965 选择排序(selection sort) : 每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录. 简单选择排序(simple selection sort) : 通过n-i次关键字之间的比较, 从n-i+1个记录中选出关键字最小的记录, 并和第i个记录交换. 选择排序需

10. 蛤蟆的数据结构进阶十排序相关概念

10. 蛤蟆的数据结构进阶十排序相关概念 本篇名言:"生,亦我所欲也:义,亦我所欲也:二者不可得兼,舍生而取义者也.--孟轲" 接下去我们将来看下排序相关的知识. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47381339 1.  排序 排序是什么? 将一组杂乱无章的记录按一定规律顺序排列起来. 什么排序方法是稳定的?什么是不稳定的? 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记

SDUT 3403 数据结构实验之排序六:希尔排序

数据结构实验之排序六:希尔排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率:对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法.你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2

13. 蛤蟆的数据结构进阶十三排序实现之希尔排序法

13. 蛤蟆的数据结构进阶十三排序实现之希尔排序法 本篇名言:"一个人光溜溜的到这个世界来 ,最后光溜溜的离开这个世界而去 , 彻底想起来 , 名利都是身外物 ,只有尽一人的心力 , 使社会上的人多得他工作的裨益 ,是人生最愉快的事情.--邹韬奋" 下面是希尔排序法了. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47706135 1.  希尔排序 希尔排序(ShellSort)是插入排序的一种.也称缩小增量排序

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法 本篇名言:"君子坦荡荡,小人长戚戚. --孔丘" 接下去我们来看下如何实现各种排序,先来看下冒泡法实现. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47683113 1.  冒泡排序(Bubble Sort) 冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来