码迷,mamicode.com
首页 > 编程语言 > 详细

哗啦啦Python之路 - Day 6 - 三种基础排序,递归,反射,模块

时间:2016-06-11 22:43:59      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

1. 三种排序方式

- 冒泡排序:两两比较,大的排右边,每次冒出去一个泡

m = [1,2,6,5,4]

for i in range(len(m)):
    for j in range(i):
        if m[j] > m[j+1]:
            m[j],m[j+1] = m[j+1],m[j]

print(m)

 

- 选择排序

对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz,则将Kz与 K1对换;
然后从K2,K3,… ,Kn中选择最小值 Kz,再将Kz与K2对换。
如此进行选择和调换n-2趟,第(n-1)趟,从Kn-1、Kn中选择最小值 Kz将Kz与Kn-1对换,最后剩下的就是该序列中的最大值,
一个由小到大的有序序列就这样形成。

m = [1,4,6,2,5]

for i in range(len(m)):
    min = i
    for j in range(i,len(m)):
        if m[min]> m[j]:
            min = j
    m[i],m[min] = m[min],m[i]

print(m)

 

- 插入排序

一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
1.从第一个元素开始,该元素可以认为已经被排序
2.取出下一个元素,在已经排序的元素序列中从后向前扫描
3.如果该元素(已排序)大于新元素,将该元素移到下一位置
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5.将新元素插入到该位置后

m = [1,4,6,2,5]
for i in range(1,len(m)):
    save = m[i]
    j = i
    while j>0 and m[j-1]>save:
        m[j] = m[j-1]
        j-=1
    m[j] = save
print(m)

 

- 附:取一组随机数的方法

#http://blog.csdn.net/hinyunsin/article/details/6311707
import random
def getrandata(num):
    a = []
    i = 0
    while i <num:
        a.append(random.randint(0,1000000))
        i +=1
    return a

n = getrandata(5)
print(n)

 

 

2. 递归

#1*2*3*4*5*6*7

def func(num):
    if num == 1:
        return 1
    return num * func(num-1)

x = func(7)
print(x)
print(1*2*3*4*5*6*7)

 

 

3. 反射

反射是基于字符串的形式去模块中操作其成员,主要就是attr系列。它的目的是简化代码,直接根据input的内容去模块里面找函数

 

 

 

 

 

 

 

 

 

哗啦啦Python之路 - Day 6 - 三种基础排序,递归,反射,模块

标签:

原文地址:http://www.cnblogs.com/hualala/p/5575974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!