`
yuanlanjun
  • 浏览: 1181363 次
文章分类
社区版块
存档分类
最新评论

排序算法空间、时间复杂度

 
阅读更多

排序算法空间、时间复杂度

简单排序法——
冒泡法是第二维循环中自己循环,找最小或最大值
选择排序和交换排序是第二维循环与第一维循环中的值比较;交换法最清晰,选择法作了改进,
只交换位置标号,算法复杂度没变。
插入法,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张(较为复杂)
高级排序法——
快速排序,从冒泡法改进得到,基本思想是任选一个记录,一般选取序列第一个,通过一趟排序将待排 记录分割成相邻的两个区域,其中一个区域中记录的关键字比另一个区域关键字都小,即一个区域的值都大于所取的关键字,另一个区域的指都小于所取的关键字, 则可以分别对这两个区域的记录进行排序,以达到整个序列有序。
将它区别于SHELL排序,后者是先有一个递减的步长数组,对相隔step-1的内容排列,然后改变步长,依次
下去。
归并排序,先在原记录中找一个中间位置(low+high)/2,对两段分别进行归并排序,最后再整体排序(即分三次)。
注意,快速排序没有最后整体排序,但一开始先排了一次。
堆排序,对选择排序的改进,利用堆的特性对记录序列进行排序。
时间复杂度
冒泡排序、选择排序和插入排序的比较次数为O(n2),最坏情况 O(n2),最好O(n)
(但选择排序最好是 O(n2)
快速排序在平均情况下复杂性为O(nlogn),最坏情况 O(n2),最好O(nlogn)
堆排序和合并排序在最坏情况下复杂性为O(nlogn)。可见,合并排序和堆排序是比较排序算法中时间复杂度最优算法。
空间复杂度
空间性能是排序所需辅助空间大小
所有简单排序和堆排序都是0(1)
快速排序为0(logn),要为递归程序执行过程栈所需的辅助空间
归并排序和基数排序所需辅助空间最多,为O(n)
看个小代码
#include <stdlib.h>
main()
{ int m,n,p;
// scanf("m=%dn=%dp=%d",&m,&n,&p);
// printf("%d%d%d/n",m,n,p);
m=3;
n=m&(-1);
p=m&&(-2);
printf("%d%d/n",n,p);
}
一、
n=m&(-1);中n恒等m
p=m&&(-2);中p恒等1;(改称0则p为0)了
-1的二进制为11;
二、
屏蔽的两句使用时,应该
输入 m=1n=2p=3
不能 1 2 3
分享到:
评论

相关推荐

    学习电脑信息常用的排序算法的时间复杂度和空间复杂度

    学习电脑信息常用的排序算法的时间复杂度和空间复杂度

    排序算法的时间复杂度

    使用插入、冒泡、选择、快排、归并、堆排共6种排序算法对同一序列进行排序,统计排序所需的平均时间并比较算法在时间上的优劣。供学习使用。

    快速排序与归并排序的时间复杂度分析

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的...本文主要介绍快速排序算法和归并排序算法的基本概念、原理以及具体的实现方法,并对这两种排序算法的时间复杂度进行分析。

    算法设计与分析-1排序算法性能分析-冒泡/选择/插入/合并/快速排序-pre ppt

    算法设计与分析 一PRESETATION 仅做参考,请勿copy冲查重塔峰 排序算法性能分析 ...但注意理论上快速排序的空间复杂度较高为O(n),且最坏情况时时间复杂度也达到了O(n2)。所以快速算法也较为常用。

    常用排序算法复杂度

    常用排序算法时间复杂度、空间复杂度总结。包括:冒泡排序、快速排序、选择排序、堆排序、插入排序、Shell排序、归并排序、基数排序。

    算法的时间复杂度和空间复杂度

    相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义)

    二级公共基础选择题

    算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构...

    排序算法比较 C实现

    1. 掌握各种排序的基本思想。 2. 掌握各种排序方法的算法实现。 3. 掌握各种排序方法的优劣分析及花费的...根据排序函数中的核心语句,计算出每种排序方法的时间复杂度级=及空间复杂度,分析几种排序方法的优劣。

    睡觉版排序算法

    * 睡觉版排序算法 * 时间复杂度,空间复杂度都是浮云啊.

    Java弱引用实现源码-DataStructure::kiss_mark::kiss_mark:数据结构、算法总结、学习算法的时间复杂度、空间复杂度、分析算法特点以及应用、Java面

    下面的算法都打包在一个应用当中,你只需要下载安装即可,里面有算法的介绍,时间复杂度,空间复杂度,代码示例 二叉树的遍历 二叉排序树 红黑树 AVL树 图的邻接表存储构成图 有向图的创建 拓扑排序-邻接矩阵存储-...

    C#排序算法的比较分析

    首先通过图表比较不同排序算法的时间复杂度和稳定性。   排序方法 平均时间 最坏情况 最好情况 辅助空间 稳定性 直接插入排序 O(n2) O(n2) O(n) O(1) 是 冒泡排序 O(n2) O(n2) O(n...

    数据结构(Java)复习题

    7. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i;i++) for (j=0;j; j++) A[i][j]=0; 8. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i...

    常用数据结构及其算法的Java实现

    八大排序算法及其实现,具体包括直接插入排序,希尔排序,直接选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序在内的八种排序算法,同时对各种算法的基本特征做出了详细分析: - 算法基本思想 - 算法的...

    c++各种排序算法对比研究

    对各种常用的排序技术和算法进行比较,包括算法原理、适用场合、时间和空间复杂度、常见应用等。源代码+报告。

    C# 算法中的各种排序

    各种C#中的排序,有希尔排序是将组分段,进行插入排序....3、算法的时间复杂度和空间复杂度 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

    几种经典的排序算法,源代码

    几种经典的排序算法 (1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。 (2)若文件初始状态基本有序...

    八大排序算法总结(含代码)

    不稳定的排序算法:快速排序、希尔排序、堆排序、选择排序(简简记记::快快些些选选堆堆) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 当n较大,则应采用时间复杂度为O(nlogn)的...

    数据结构与排序算法------通过代码示例,讲解:数据结构和9种排序算法。.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    十大经典排序算法,附带动画演示效果,超硬核

    通过对这些算法的详细讲解和代码实现,学生将能够深入理解排序算法的原理、时间复杂度、空间复杂度以及实际应用场景。 本教程适用于计算机科学、软件工程和数据科学等专业的学生。在学习过程中,学生将能够掌握各种...

Global site tag (gtag.js) - Google Analytics