7.1range函数和冒泡排序

range函数和冒泡排序

一、range函数

  • 在Python开发应用中 range函数相当重要,也比较常用

    首先看range函数的原型: range(start, end, scan)

    参数解析:

    ​ start: 计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);

    ​ end: 计数到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5(俗称:包前不包后)

    ​ scan:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

    例:
    for i in range(5):    
         print(i,end=' ')      #输出 [0, 1 ,2 ,3 ,4]         #其中加end=''不换行输出
    
    for i in range(0,5):
         print(i,end=' ')      #输出 [0 ,1 ,2, 3 ,4]
     
    for i in range(-5):
         print(i,end=' ')      #输出 []
            
    for i in range(0, 5, 2):
         print(i, end=' ')     #输出 [0 ,2 ,4]
     
    for i in range(0, -5, -2):
         print(i, end=' ')     #输出 [0 ,-2 ,-4]
    
    
    
  • 关于range函数的小任务

    利用for循环和range,将1-30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成*。
    
    
    例:
    c=list(range(1,31))        #将1-30的数字一次添加到一个列表中
    x='*'                      #定义一个值为*的变量
    for i in c:                #变量i在列表c中遍历
            if i%3==0:         #判断i向3取余的余数是否为0
               c[i-1]=x        #余数为0则将此索引的元素改为*
            print(c)
            
    结果:
    [1, 2, '*', 4, 5, '*', 7, 8, '*', 10, 11, '*', 13, 14, '*', 16, 17, '*', 19, 20, '*', 22, 23, '*', 25, 26, '*', 28, 29, '*']
    

二、冒泡排序

1.简介

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

2.算法原理

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

3.range函数进行冒泡排序

a=[1,2,5,3,6,8,4]                            #定义列表a
for i in range(0,len(a),1):                  #range确定索引范围,变量i在这个范围内遍历
    print(i)
    for j in range(i+1,len(a),1):            #range确定索引范围,变量j在这个范围内遍历
        if a[j] < a[i]:                      #将前后遍历的值进行比较
            a[j],a[i]=a[i],a[j]              #若后者小于前者,则将俩数值调换位置
            print(a)

输出结果:
0
1
2
[1, 2, 3, 5, 6, 8, 4]
3
[1, 2, 3, 4, 6, 8, 5]
4
[1, 2, 3, 4, 5, 8, 6]
5
[1, 2, 3, 4, 5, 6, 8]
6

            
            
   
posted @ 2020-07-26 01:04  杨梅杨梅  阅读(363)  评论(0编辑  收藏  举报