每天一个小算法(insertion sort3)

今天多看看插入排序的理论部分。

先贴几个概念吧:

1、伪代码英语pseudocode),又称为虚拟代码,是高层次描述算法的一种方法。它不是一种现实存在的编程语言(已经出现了类似伪代码的语言,参见Nuva);它可能综合使用多种编程语言的语法、保留字,甚至会用到自然语言。它以编程语言的书写形式指明算法的职能。相比于程序语言(例如Java、C++、C、Delphi 等等)它更类似自然语言。它是半形式化、不标准的语言。我们可以将整个算法运行过程的结构用接近自然语言的形式(这里可以使用任何一种作者熟悉的文字,例如中文、英文,重点是将程序的意思表达出来)描述出来。使用伪代码,可以帮助我们更好的表述算法,不用拘泥于具体的实现。(源自:http://zh.wikipedia.org/wiki/%E4%BC%AA%E4%BB%A3%E7%A0%81)

自己理解:伪代码种类繁杂,没有固定的书写格式,不过要写清楚让人看懂就可以了。

INSERT-SORT(A)
    for j <-- 2 to length[A]
        do key <-- A[j]
           > Insert A[j] into the sorted sequence A[1..j-1].
           i <-- j - 1
        while i > 0 and A[i] > key
            do A[i+1] <-- A[i]
               i <-- i - 1
        A[i+1] <-- key


以上是copy别人的伪代码。具体来说,就是 if 条件 do 事情;for while 循环;<—为赋值语句。以后写程序之前先要写伪代码。


2、时间和空间复杂度

算法时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

 

一个 程序空间复杂度是指运行完一个程序所需内存的大小。利用 程序空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个 程序执行时除了需要 存储空间和存储本身所使用的指令、常数、 变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。 程序执行时所需 存储空间包括以下两部分。
(1)固定部分。这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间( 常量、简单 变量)等所占的空间。这部分属于静态空间。
(2)可变空间,这部分空间的主要包括动态分配的空间,以及 递归栈所需的空间等。这部分的空间大小与 算法有关。
一个 算法所需的 存储空间用f(n)表示。
S(n)=O(f(n))
其中n为问题的规模,S(n)表示 空间复杂度
据说现在空间复杂度不用过多考虑,毕竟内存都比较大了。时间复杂度还是要好好琢磨的。

 

 



 


 

转载于:https://www.cnblogs.com/batteryhp/p/5020514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值