zoukankan      html  css  js  c++  java
  • python实现一可升降式的冒泡排序

    前几天看了个冒泡的排序,这里手敲了一下代码,简单记录如下:

    def bubble_sort(arr, order='asc'):
    	# #可选升降序的冒泡排序, order>0升序,order<0降序
    	# swapNeeded = True  # flag位
    	counter = 0  # 计数(用于统计多少次排好序)
    	for i in range(len(arr)):  # 这个循环负责设置冒泡排序进行的次数(比如说n个数,则只要进行n-1次冒泡,就可以把这个n个数排序好)
    
    		swap_needed = False
    		for j in range(0, len(arr)-i-1):
    			# 这里这个j呢就是控制每一次具体的冒泡过程,请你想一想,我们第一次冒泡需要冒几次,也就是说需要比较几次,
    			# 假如有三个数,那只需要两次就可以了,当下一次时,最后一个
    			# 已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值,即不用冒“无用之泡泡”
    
    			if order == 'asc':
    				if arr[j] > arr[j+1]:
    					arr[j], arr[j + 1] = arr[j + 1], arr[j]
    					swap_needed = True
    
    			elif order == 'desc':
    				if arr[j] < arr[j+1]:
    					arr[j], arr[j + 1] = arr[j + 1], arr[j]
    					swap_needed = True
    
    		if not swap_needed:
    			break
    		i += 1
    		counter += 1
    
    	return arr, counter
    
    
    arr = [34,2,5,4,17,36,8]
    # print(bubble_sort(arr))
    print(bubble_sort(arr, 'asc'))
    print(bubble_sort(arr, 'desc'))
    

    结果:

    ([2, 4, 5, 8, 17, 34, 36], 3)
    ([36, 34, 17, 8, 5, 4, 2], 6)
    

    参考:"菜鸟教程"
    "python排序算法之一:冒泡排序(及其优化)"

  • 相关阅读:
    比较好的总结runtime
    开发证书详解
    删除数组中特定元素推荐做法
    pbxproj文件冲突解决办法
    svn不提交user文件
    c提高第六次课 文件读取
    c++函数指针
    c提高第五次作业
    c提高第四次作业
    c提高第四课
  • 原文地址:https://www.cnblogs.com/sirxy/p/11795393.html
Copyright © 2011-2022 走看看