Python排序算法
Posted 爱女王,爱生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python排序算法相关的知识,希望对你有一定的参考价值。
不觉已经有半年没写了,时间真是容易荒废,这半年过了个春节,去拉萨旅行。本职工作也很忙,没有开展系统的学习和总结。
今年开始静下心来从基础开始学习,主要分为三部分,算法、线性代数、概率统计。
首先学习算法,用Python语言实现,主要是为了了解其中的思想,毕竟现成的轮子很多了。接下来学习线性代数和概率统计,主要通过日本的那两本书学习,编程实现方面从数值分析开始学习,也许要用到MATLAB。
算法,学习的书籍是《python算法教程》,涵盖的知识比较全,缺点是需要有一定的基础,我是先看了这本书,又看了《程序员的数学》(这个看起来太轻松了),然后对里面的思想有了感性的认识,但是具体到算法,还是很难写出来的,所以想把书中涉及到的问题,代码,都自己实现一遍,作为复习。
先从最简单的排序开始,可以从头撸到尾,也可以反过来,可以写成递归,也可以写成循环。
1. 从头撸到尾,就是选出小的,放到最前面。
递归
1 def sort_f(seq,i): 2 if i==0: 3 return 4 sort_f(seq,i-1) 5 j=i 6 while j>0 and seq[j-1]>seq[j]: 7 seq[j],seq[j-1]=seq[j-1],seq[j] 8 j-=1 9 10 seq = [9,8,7,6,5,4,3,2,1] 11 12 ------------------------------------------------------- 13 14 >>> sort_f(seq,len(seq)-1) 15 >>> seq 16 [1, 2, 3, 4, 5, 6, 7, 8, 9]
循环
def sort_f2(seq): for i in range(len(seq)): for j in range(i,len(seq)): if seq[j]<seq[i]: seq[i],seq[j]=seq[j],seq[i]
2.从尾撸到头,就是选出最大的,放到最后
递归
def sort_e(seq,i): if i==0: return sort_e(seq,i-1) j = i while j>0 and seq[j]<seq[j-1]: seq[j],seq[j-1]=seq[j-1],seq[j] j-=1
递归或者这样写
def sort_ee(seq,i): if i==0: return maxj=i for j in range(i): if seq[j]>seq[maxj]: maxj=j seq[i],seq[maxj]=seq[maxj],seq[i] sort_ee(seq,i-1)
循环
def sort_e2(seq): i=len(seq)-1 while i>0: for j in range(i): if seq[j]>seq[i]: seq[i],seq[j]=seq[j],seq[i] i-=1
以上是关于Python排序算法的主要内容,如果未能解决你的问题,请参考以下文章