千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理

《0039》第三章 Python编程进阶:常见算法讲解

1、冒泡排序

  a、题目:列表数据[4,2,3,1] 用冒泡排序
    a、冒泡排序的对比方式:相邻交换位置去对比
    b、冒泡排序示例
      list1=[4,2,3,1]
      len1=len(list1)
      print(len1)
      for i in range(1,len1):
        for j in range(1,len1-i+1):
          if list1[j-1]>list1[j]:
            list1[j-1],list1[j]=list1[j],list1[j-1]
      print(list1)

      输出结果:
      4
      [1, 2, 3, 4]

 

      流程解析:
      第一个循环控制外部循环总共循环多少次(循环三次)
      第二个循环控制内部循环总共循环多少次(循环三次)
      4,2,3,1
      i=1 4231
      j=1 (j-1 > j) 2431
      j=2 (j-1 > j) 2341
      j=3 (j-1 > j) 2314
      i=2
      j=1 (j-1 > j) 2314
      j=2 (j-1 > j) 2134
      i=3
      j=1 (j-1 > j) 1234

 

2、选择排序

a、题目:列表数据[4,2,3,1] 用选择排序

  a、选择排序的对比方式:找打最大值,拿出来去和别人对比。原理:在一组数据中从最开始找到最大(小)的元素,放在排序的起始位置
  b、选择排序示例

    list1=[4,2,3,1]
    max_index=0
    for i in range(0,len(list1)-1):
      for j in range(i+1,len(list1)):
        if list1[j]>list1[max_index]:
          max_index=j
      list1[i],list1[max_index]=list1[max_index],list1[i]
      max_index=i+1
    print(list1)
    输出结果:[4, 3, 2, 1]
    流程解析
    4,2,3,1
    第一次循环
    i=0
    j=1 2>4(否) max=0 4231
    j=2 3>4(否) max=0 4231
    j=3 1>4(否) max=0 4231
    第二次循环
    i=1
    j=1 3>2(是) max=2 4231
    j=2 1>2(否) max=2 4321
    第三次循环
    i=2
    j=3 1>2(否) max=3 4321

 

3、递归算法

a、题目:计算1+2+3 用递归计算
  a、递归的特点:函数内部自己调用自己(有出口,满足一个条件,就不执行)
  b、递归算法示例
    def sum_number(num):
      if num==1:
        return 1
      temp=sum_number(num-1)
      return temp+num

 

    a=sum_number(3)
    print(a)
    输出结果:6

 

posted on 2022-04-24 15:37  运维2005  阅读(83)  评论(0)    收藏  举报