1. 算法认识
1.算法是指解决问题的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。都说“程序=算法+数据结构”,虽然是有很多人反驳,但是也能说明算法在程序中的重要性。
2,算法五大特征:
(1)有穷性
算法的有穷性是指算法必须在执行有限个步骤之后终止;
(2)确切性
算法每一步骤必须有确切的定义;
(3)输入项
算法必须有0个或者多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定义了初始条件;
(4)输出项
算法必须有一个或者多个输出,以反映对输出的加工后的结果,没有输出的算法毫无意义;
(5)可行性
算法中执行的每一个步骤都可以被分解为基本的可执行操作步骤,即每一个计算步骤都可以在有限时间内完成;
3,算法评价
(1)时间复杂度
算法的时间复杂度是指执行算法所需的计算工作量;
常见的时间复杂度:O(1), O(n), O(n^2)
(2)空间复杂度
算法的空间复杂度是指一个算法在运行过程中临时占用存储空间大小的量度;
充分利用python代码的优势,尽可能将代码写到简洁,方便,易懂;
2. 冒泡排序
1,总结(助记)
从第一个数开始,与后面数比较,大的放后面,小的放前面,大的再与后面的数比较,依次类推,不断交换,最后将选出第一个最大的数,放在最后;
2,原理
基本原理是比较相邻两个数的大小,将两个数中比较大的那个数交换到靠后的位置,不断地交换下去就可以将最大的数放到队列的尾部,然后重新开始,直到将数列排成有序数列;
举例:
冒泡排序代码:
import random
def randomList(n):
iList = []
for i in range(n):
iList.append(random.randrange(1000)) # append()函数用于产生随机数存入iList列表中
return iList
iList1=randomList(20)
def bubbleSort(iList):
"""冒泡排序"""
if len(iList1) <=1:
return iList1
for i in range(1,len(iList1)):
for j in range(0,len(iList1)-i):
if iList[j] >= iList[j+1]:
iList1[j], iList1[j+1] = iList1[j+1], iList1[j]
print("第%d轮排序结果为:" %i, end=" ")
print(iList1)
return iList
if __name__ == "__main__":
print(iList1)
print("冒泡排序结果:",bubbleSort(iList1))
运行代码结果展示:
3. 选择排序
1, 总结(助记)
某一个数为基数,遍历数列中其他的数字,找出最小的那个数,然后交换这两个数的位置,找到最小或者最大的那个数;
2,原理
冒泡排序是相邻两个数比较,而选择排序则是某个数和数列中其他所有的数进行比较,挑出最小的最小(大)的那个数就可以了;
3,举例演示:
选择排序算法程序
将这个数放到合适的位置,然后在抛开这个数的子数列中找找最大值,知道自数列为空为止。
"""
import random
def randomList(n):
iList = []
for i in