不觉已经有半年没写了,时间真是容易荒废,这半年过了个春节,去拉萨旅行。本职工作也很忙,没有开展系统的学习和总结。

今年开始静下心来从基础开始学习,主要分为三部分,算法、线性代数、概率统计。

首先学习算法,用Python语言实现,主要是为了了解其中的思想,毕竟现成的轮子很多了。接下来学习线性代数和概率统计,主要通过日本的那两本书学习,编程实现方面从数值分析开始学习,也许要用到MATLAB。

算法,学习的书籍是《python算法教程》,涵盖的知识比较全,缺点是需要有一定的基础,我是先看了这本书,又看了《程序员的数学》(这个看起来太轻松了),然后对里面的思想有了感性的认识,但是具体到算法,还是很难写出来的,所以想把书中涉及到的问题,代码,都自己实现一遍,作为复习。

先从最简单的排序开始,可以从头撸到尾,也可以反过来,可以写成递归,也可以写成循环。

1. 从头撸到尾,就是选出小的,放到最前面。

递归

 def sort_f(seq,i):
if i==0:
return
sort_f(seq,i-1)
j=i
while j>0 and seq[j-1]>seq[j]:
seq[j],seq[j-1]=seq[j-1],seq[j]
j-=1 seq = [9,8,7,6,5,4,3,2,1] ------------------------------------------------------- >>> sort_f(seq,len(seq)-1)
>>> seq
[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

还有一些其它好玩的排序算法

3.侏儒排序

def gnomesort(seq):
i=0
while i<len(seq):
if i==0 or seq[i-1]<seq[i]:
i+=1
else:
seq[i-1],seq[i]=seq[i],seq[i-1]
i-=1

4.归并排序

def mergesort(seq):
mid = len(seq)//2
lft = seq[:mid]
rgt = seq[mid:]
if len(lft)>1: lft = mergesort(lft)
if len(rgt)>1: rgt = mergesort(rgt)
res=[]
while lft and rgt:
if lft[-1]>=rgt[-1]:
res.append(lft.pop())
else:
res.append(rgt.pop())
res.reverse()
return (lft or rgt) + res

Python排序算法的更多相关文章

  1. python排序算法实现(冒泡、选择、插入)

    python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)) ...

  2. Python排序算法之选择排序定义与用法示例

    Python排序算法之选择排序定义与用法示例 这篇文章主要介绍了Python排序算法之选择排序定义与用法,简单描述了选择排序的功能.原理,并结合实例形式分析了Python定义与使用选择排序的相关操作技 ...

  3. 44.python排序算法(冒泡+选择)

    一,冒泡排序: 是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个,如果他们的排序错误就把他们交换过来. 冒泡排序是稳定的(所谓稳定性就是两个相同的元素不会交换位置) 冒泡排序算法的运作如下 ...

  4. python 排序算法总结及实例详解

    python 排序算法总结及实例详解 这篇文章主要介绍了python排序算法总结及实例详解的相关资料,需要的朋友可以参考下 总结了一下常见集中排序的算法 排序算法总结及实例详解"> 归 ...

  5. 带你掌握4种Python 排序算法

    摘要:在编程里,排序是一个重要算法,它可以帮助我们更快.更容易地定位数据.在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的. 本文分享自华为云社区<Python ...

  6. Python排序算法——冒泡排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10786904.html 一.冒泡排序(Bubb ...

  7. Python排序算法——插入排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787464.html 一.插入排序(Inse ...

  8. Python排序算法——选择排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787340.html 一.选择排序(Sele ...

  9. Python排序算法——快速排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10768593.html 排序算法(Sortin ...

随机推荐

  1. CSS图片列表

    1.效果图: 2.Example Source Code <h3><a href="http://www.52css.com/">我爱CSS画廊</a ...

  2. KTV项目总结

    KTV项目总结 大约一个星期前吧,老湿说我们要开始做KTV项目了,说是KTV项目是贯穿整个学的内容的,会所的,要我们认真去对待,一开始,第一天搭前台界面,总是有不会的,要去问问,这个要用什么控件啊,用 ...

  3. Lost Cows(线段树 POJ2182)

    Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10354 Accepted: 6631 Descriptio ...

  4. 执行大量的Redis命令,担心效率问题?用Pipelining试试吧~

    参考的优秀文章 Request/Response protocols and RTT 来源 原来,系统中一个树结构的数据来源是Redis,由于数据增多.业务复杂,查询速度并不快.究其原因,是单次查询的 ...

  5. Oracle指定运行变量

    1定义:运行时变量可以让我们和sql语句之间有个交互,允许我们执行sql语句时动态传递参数 2.语法: &varName 3.运行时变量可以出现在任意位置 例如: select &co ...

  6. Java中Object类

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类. Object类中的方法,适合所有子类. Object中的几个重要方法: 1 ...

  7. ios下移除原生样式

    之前遇到过这个问题,今天无意中在网上看见博文 记录一下. 设置这个就好: -webkit-appearance : none ;

  8. 扩展XAF模型信息实现自定义功能

    如何隐藏 web listview 的 编辑控制列如下图: 这列怎么让它隐藏? 感谢[少侠]XAF_杨东 提供解答!感谢XAF_小学生整理.   A: 注册自定义接口IModelListViewExt ...

  9. const char* && string && String^ 类型转换

    const char* && string && String^ 类型转换 const char* ---> string const char * cw= &q ...

  10. fifter常见的运用场景

    没配置过滤器 package servlet; import java.io.IOException; import javax.servlet.ServletException; import ja ...