元组操作及命名规则练习题

匿名 (未验证) 提交于 2019-12-02 23:37:01

依次接受用户输出的3个数,排升序后打印(四种方法)

  1. 转换int后,判断大小排序(if…else)
a = int(input('num1')) b = int(input('num2')) c = int(input('num3')) if a>=b:    if c>=a:         print(b,a,c)    elif b>c:         print(c,b,a)    else:         print(b,c,a) else:    if b<c:         print(a,b,c)    elif a<c and b>c:         print(a,c,b)    else:         print(c,a,b) 

可改进之处:
①:可创建列表,利用for循环控制输入个数,接下来利用索引比较大小

nums=[] for i in range(3):     a = input('nums')     nums.append(int(a)) b = nums 

②:可用format函数填充,减少代码输入

nums=[] for i in range(3):      nums.append(int(input('{}: '.format(i)))) 
  1. 使用min排序
nums=[] out = None for i in range(3):     nums.append(int(input('{}: '.format(i))))  while True:     cur = min(nums)     print(cur)     nums.remove(cur)     if len(nums) == 1:         print(nums[0])         break 
  1. 使用列表的sort方法
#法三: a = int(input('num1')) b = int(input('num2')) c = int(input('num3')) n = [a,b,c] n.sort() print(n) 
  1. 冒泡法
    冒泡排序(Bubble Sort): 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
    走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列).
  • 交换排序
  • 两两比较大小,交换位置
  • 结果分升序和降序
  • 需要数据一轮轮比较
  • 可以设定一个标记判断此轮是否有数据交换法三,如无结束排序
  • 最差的排序情况下,遍历次数n(n-1)/2
  • 最好排序情况下,遍历次数n-1
  • 时间复杂度O(n^2)(由遍历次数(n-1)n得出)

法一(冒泡法简单实现):

num_list = [     [1,9,8,5,6,7,4,3,2],     [1,2,3,4,5,6,7,8,9] ] nums = num_list[0] print(nums) length = len(nums) count_swap = 0 count = 0 for i in range(length):     for j in range(length-i-1):         count += 1         if nums[j] > nums[j+1]:             tmp = nums[j]             nums[j] = nums[j+1]             nums[j+1] = tmp             count_swap += 1 print(nums,count_swap,count)  

法一可优化点:法一情况下,即使某一趟已全部排序完成,也会走完剩余扫描过程,可以加入count_swap,如为0,则认为交换已完成

num_list = [     [1,9,8,5,6,7,4,3,2],     [1,2,3,4,5,6,7,8,9] ] nums = num_list[1] print(nums) length = len(nums) count_swap = 0 count = 0 for i in range(length):     flag = False     for j in range(length-i-1):         count += 1         if nums[j] > nums[j+1]:             tmp = nums[j]             nums[j] = nums[j+1]             nums[j+1] = tmp             flag = True             count_swap += 1     if not flag:         break print(nums,count_swap,count) 
文章来源: https://blog.csdn.net/Nikki0126/article/details/88826977
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!