当前位置:   article > 正文

Python初级笔记4 排序

Python初级笔记4 排序

冒泡排序

1. 算法步骤

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

  1. # 时间复杂度 O(1) O(logN) O(n)
  2. # 空间复杂度
  3. a=[1,2,7,8,9,65,4,11]
  4. for i in range(0,len(a)-1):
  5. for j in range(0,len(a)-1):
  6. if a[j]<= a[j+1]:
  7. a[j],a[j+1]=a[j+1],a[j]
  8. else:
  9. pass
  10. print(a)#时间复杂度=O(n^2)

选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

  1. a=[1,2,7,8,9,20,65,4,5,11]
  2. for i in range(0,len(a)):
  3. index=i
  4. for j in range(i,len(a)):
  5. if a[index]>a[j]:
  6. a[index],a[j]=a[j],a[index]
  7. else:
  8. pass
  9. print(a)
  1. a=[1,2,7,8,9,20,65,4,5,11,11,3,13,27]
  2. for i in range(0,len(a)):
  3. for j in range(i,len(a)):
  4. if a[i]>a[j]:
  5. a[i],a[j]=a[j],a[i]
  6. else:
  7. pass
  8. print(a)

插入排序

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

  1. a=[11,53,1,4,8,4,9,19,22,13]
  2. for i in range(0,len(a)-1):
  3. for j in range(i+1,0,-1):
  4. if a[j]<a[j-1]:
  5. a[j],a[j-1]=a[j-1],a[j]
  6. print(a)

二分查找法

1.必须采用顺序存储结构

2.必须按关键字大小有序排列。

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 

  1. a=[1,2,5,7,11,14,19,24,28,35,48,56,61,77,101]
  2. item=int (input("enter the num="))
  3. l=0
  4. r=len(a)-1
  5. while r>=l:
  6. mid=int((r+l)/2)
  7. g=a[mid]
  8. if item==g:
  9. print(mid)
  10. break
  11. elif item>g:
  12. l=mid+1
  13. elif item<g:
  14. r=mid-1
  15. else:
  16. print("we don't have the num")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/400005
推荐阅读
相关标签
  

闽ICP备14008679号