排序算法空间、时间复杂度
简单排序法——
冒泡法是第二维循环中自己循环,找最小或最大值
选择排序和交换排序是第二维循环与第一维循环中的值比较;交换法最清晰,选择法作了改进,
只交换位置标号,算法复杂度没变。
插入法,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张(较为复杂)
高级排序法——
快速排序,从冒泡法改进得到,基本思想是任选一个记录,一般选取序列第一个,通过一趟排序将待排 记录分割成相邻的两个区域,其中一个区域中记录的关键字比另一个区域关键字都小,即一个区域的值都大于所取的关键字,另一个区域的指都小于所取的关键字, 则可以分别对这两个区域的记录进行排序,以达到整个序列有序。
将它区别于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) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的...本文主要介绍快速排序算法和归并排序算法的基本概念、原理以及具体的实现方法,并对这两种排序算法的时间复杂度进行分析。
算法设计与分析 一PRESETATION 仅做参考,请勿copy冲查重塔峰 排序算法性能分析 ...但注意理论上快速排序的空间复杂度较高为O(n),且最坏情况时时间复杂度也达到了O(n2)。所以快速算法也较为常用。
常用排序算法时间复杂度、空间复杂度总结。包括:冒泡排序、快速排序、选择排序、堆排序、插入排序、Shell排序、归并排序、基数排序。
相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义)
算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构算法的空间复杂度 是指程序控制结构...
1. 掌握各种排序的基本思想。 2. 掌握各种排序方法的算法实现。 3. 掌握各种排序方法的优劣分析及花费的...根据排序函数中的核心语句,计算出每种排序方法的时间复杂度级=及空间复杂度,分析几种排序方法的优劣。
* 睡觉版排序算法 * 时间复杂度,空间复杂度都是浮云啊.
下面的算法都打包在一个应用当中,你只需要下载安装即可,里面有算法的介绍,时间复杂度,空间复杂度,代码示例 二叉树的遍历 二叉排序树 红黑树 AVL树 图的邻接表存储构成图 有向图的创建 拓扑排序-邻接矩阵存储-...
首先通过图表比较不同排序算法的时间复杂度和稳定性。 排序方法 平均时间 最坏情况 最好情况 辅助空间 稳定性 直接插入排序 O(n2) O(n2) O(n) O(1) 是 冒泡排序 O(n2) O(n2) O(n...
7. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i;i++) for (j=0;j; j++) A[i][j]=0; 8. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i...
八大排序算法及其实现,具体包括直接插入排序,希尔排序,直接选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序在内的八种排序算法,同时对各种算法的基本特征做出了详细分析: - 算法基本思想 - 算法的...
对各种常用的排序技术和算法进行比较,包括算法原理、适用场合、时间和空间复杂度、常见应用等。源代码+报告。
各种C#中的排序,有希尔排序是将组分段,进行插入排序....3、算法的时间复杂度和空间复杂度 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
几种经典的排序算法 (1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。 (2)若文件初始状态基本有序...
不稳定的排序算法:快速排序、希尔排序、堆排序、选择排序(简简记记::快快些些选选堆堆) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 当n较大,则应采用时间复杂度为O(nlogn)的...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
通过对这些算法的详细讲解和代码实现,学生将能够深入理解排序算法的原理、时间复杂度、空间复杂度以及实际应用场景。 本教程适用于计算机科学、软件工程和数据科学等专业的学生。在学习过程中,学生将能够掌握各种...