Python基础算法练习

冒泡排序

# 冒泡
def bubble(List):
    for j in range(len(List)-1,0,-1):
        for i in range(0, j):
            if List[i] > List[i+1]:
                List[i], List[i+1] = List[i+1], List[i]
        #     print(‘iteration #{}.{}: {}‘.format(abs(j-8),i,List))
        # print(‘iteration #{}: {}‘.format(abs(j-9), List))
    return List

lis = [12,56,44,33,8,6,4,2,3]
print(‘Before bubble sort: {}‘.format(lis))
print(‘After bubble sort:  {}‘.format(bubble(lis)))

==>
Before bubble sort: [12, 56, 44, 33, 8, 6, 4, 2, 3]
After bubble sort:  [2, 3, 4, 6, 8, 12, 33, 44, 56]

# 冒泡算法原理:
# 从序列0元素开始,每两个元素做为对比,如果两个顺序错误则互调换
# 这样利用双层循环,每一次遍历列表将会以此选出最大值(或最小,取决于你怎么取)元素放置最右边# 如果我描述的不够详细,可以将函数中的两条print语句注释解开,查看冒泡算法每一步操作

选择排序

# 选择算法
def selection_sort(L):
    N = len(L)
    exchanges_count = 0
    for i in range(N-1):
        min_index = i
        for j in range(i+1, N):
            if L[min_index] > L[j]:
                min_index = j
        if min_index != i:
            L[min_index], L[i] = L[i], L[min_index]
            exchanges_count += 1
    #     print(‘iteration #{}: {}‘.format(i, L))
    # print(‘Total {} swappings‘.format(exchanges_count))
    return L

testlist = [17, 23, 20, 14, 12, 25, 1, 20, 81, 14, 11, 12]
print(‘Before selection sort: {}‘.format(testlist))
print(‘After selection sort:  {}‘.format(selection_sort(testlist)))

# 选择算法原理:
# 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
# 同样,可以解开print的注释查看其详细过程

插入排序

# 插入排序
def insertion_sort(lst):
    if len(lst) == 1:
        return lst
    for i in range(1, len(lst)):
        temp = lst[i]
        j = i - 1
        while j >= 0 and temp < lst[j]:
            lst[j + 1] = lst[j]
            j -= 1
        lst[j + 1] = temp
        print(lst)
    return lst

testlist = [17, 23, 20, 14, 12, 25, 1, 20, 81, 14, 11, 12]
r = insertion_sort(testlist)
print(r)

# 插入排序原理
# 1. 从第一个元素开始,该元素可以认为已经被排序
# 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
# 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
# 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
# 5. 将新元素插入到该位置后
# 6. 重复步骤2~5
时间: 2024-10-13 08:33:46

Python基础算法练习的相关文章

Python基础算法综合:加减乘除四则运算方法

#!usr/bin/env python# -*- coding:utf-8 -*-#python的算法加减乘除用符号:+,-,*,/来表示#以下全是python2.x写法,3.x以上请在python(打印放入括号内) 例如:print('1+1=',1+1)print '*-----------------------------------------------------*分割符'print "1+1=",1+1 #打印加法1+1的结果2print "2-1=&quo

python - 基础算法题 - 用户登录(三次机会)

username = input("输入名字") userword = int(input("输入密码")) i=1 while i<=3: if username = '你好' and userword = 123: print("登录成功") else: print("登录失败") i++ 原文地址:https://www.cnblogs.com/bigbigbird/p/11170922.html

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

python基础——sorted()函数

python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来. Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 此外,sorted()函数也是一个

Python基础教程【读书笔记】 - 2016/7/31

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章  充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括一组模块,称为标准库standard library.展示这些模块的工作方式,讨论如何分析它们,学习它们所提供的功能. [10.1] 模块 已经知道如何创建和执行自己的程序,也学会了怎么用import从外部模块获取函数并且为自己的程序使用.接下来看看怎么编写自己的模块. [10.1.1] 模块是程序

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

2017传智播客python基础班+就业班

2017传智播客python基础班+就业班  地址:http://www.zygx8.com/thread-6085-1-1.html 本课程包含了Python的基础语法和核心编程,以及Python应用中流行的数据库.前端,Web框架,爬虫框架及其分布式策略等技术,包含了丰富的项目案例.适合零基础或有一定Linux和Python基础的学生,特别适合于大专院校计算机专业的学生,学习过各类视频教程的未就业人士以及在职程序员. python基础 linux操作系统基础 1-Linux以及命令 2-li

python基础一

python基础一 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django 科学运算.人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas 系统运维: 运维人员必备语言 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而