排序 0
来源:互联网 发布:祛痘产品淘宝 编辑:程序博客网 时间:2024/06/11 21:48
学习排序的基本概念和评判标准
学习多种排序算法
利用 python 2.x
语言实现
百度百科:排序算法
排序:对一个序列,按照数字的大小,进行递增或者递减的排列的操作
评判标准包括 稳定性,时间复杂度 和 空间复杂度
稳定性
如果序列中同样大小的元素的相对位置在排序过后仍旧保持不变,则该排序算法是稳定的。
比如,原始序列为 (3,1) (2,2) (3,3) (1,4)
(括号内第一个元素表示值,第二个表示下标)
排序过后有两种可能结果
(1,4) (2,2) (3,1) (3,3)
,则该排序算法是稳定的;(1,4) (2,2) (3,3) (3,1)
,则该排序算法是不稳定的
时间复杂度
百度百科:时间复杂度
时间复杂度指执行算法所需的计算工作量
时间复杂度是一个函数,它定性的描述该算法的运行时间,常用 O
符号表示,它考察当输入大小趋近无穷大时的情况
一般情况下,算法中基本操作重复执行的次数是问题规模 n
的某个函数,用 T(n)
表示,若有某个辅助函数 f(n)
,使得当 n
趋近于无穷大时,T(n)/f(n)
的极限值为不等于零的常数,则称 f(n)
是 T(n)
的同数量级函数。记作 T(n)=O(f(n))
,称 O(f(n))
为算法的渐进时间复杂度,简称时间复杂度。
分析:随着模块 n
的增大,算法执行的时间的增长率和 f(n)
的增长率成正比,所以 f(n)
越小,算法的时间复杂度越低,算法的效率越高。
在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出 T(n)
的同数量级(它的同数量级有以下:1
,logn
,n
,nlogn
,n 的平方
,n 的三次方
,2 的 n 次方
,n!
),找出后,f(n) = 该数量级
,若 T(n)/f(n)
求极限可得到一常数 c
,则时间复杂度 T(n) = O(f(n))
比如函数如下所示:
def test(n): for i in xrange(n): for j in xrange(n): print i*j for k in xrange(n): print i*j*k
针对当前函数 test
,基本操作为 print i*j
和 print i*j*k
,T(n) = n^2+n^3
,其同数量级为 n^3
,所以 f(n) = n^3
,该函数的时间复杂度 T(n)=O(n^3)
Note:
- 一重
for
循环,时间复杂度为O(n)
- 二重
for
循环,时间复杂度为O(n^2)
m
重for
循环,时间复杂度度为O(n^m)
- 二分操作的时间复杂度为
O(logn)
- 一个
for
循环嵌套一个二分操作,则时间复杂度为O(nlogn)
空间复杂度
百度百科:空间复杂度
一个算法在计算机存储器上所占用的存储空间包括三个方面:
- 存储算法本身所占用的存储空间
- 算法的输入输出数据所占用的存储空间
- 算法在运行过程中临时占用的存储空间
空间复杂度指算法在运行过程中临时占用存储空间大小的量度,记做 S(n)=O(f(n))
实现排序算法如下:
- 选择排序(
selection sort
) - 插入排序(
insert sort
) - 折半插入排序(
binary insert sort
) - 冒泡排序(
bubble sort
) - 快速排序(
quick sort
) - 归并排序(
merge sort
) - 希尔排序(
shell sort
) - 基数排序(
radix sort
) - 堆排序(
heap sort
)
- 排序0
- 排序 0
- 数据结构 排序0
- 数据结构 排序0
- 算法0介绍 排序
- items 排序 0
- actionscript3.0 数组排序
- swift3.0冒泡排序
- Swift3.0插入排序
- Swift3.0选择排序
- Swift3.0 归并排序
- Swift3.0 冒泡排序
- 0交换排序
- 0交换排序
- 排序
- 排序
- 排序
- 排序
- JAVAWEB项目--模拟考试系统需求(一)
- HDOJ2068 RPG的错排
- 归并排序(内部)总结
- Qt5.4.1 在Win7+MinGW-w64 v6.4.0环境下源码编译64位库文件
- 桶排序
- 排序 0
- Python爬虫Selenium使用
- C++递归求解N个元素的所有子集
- 15算法课程 53. Maximum Subarray
- position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
- JS的Dom和事件处理机制(三)
- 试题18:树的子结构
- 粒子滤波
- JZOJ5393【NOIP2017提高A组模拟10.5】Snake vs Block DP