bisec模块:维护一个已排序列表,支持二分查找,二分插入
bisect_left(a,x,lo = 0,hi = len(a)):
bisec_right(a,x,lo = 0,hi = len(a)) :
from bisect import *
a = [2,1,0,2,5,3,3,2,4,1,3,1]
sorted_a = sorted(a)
print(sorted_a)
x = 6
print('x = {},a 中查找的第一个位置为{}'.format(x,bisect_left(a,x)))
x = 10
print('x = {},a 中查找的第一个位置为{}'.format(x,bisect_left(a,x)))
x = 2
print('x = {},a 中查找的第一个位置为{}'.format(x,bisect_left(a,x)))
x = 2
print('x = {},a 中查找的最后一个位置为{}'.format(x,bisect_right(a,x)))
运行结果:
bisect模块:维护一个已排序列表,支持二分查找,二分插入
insort_left(a,x,lo = 0,hi = len(a)):
insort_right(a,x,lo = 0,hi = len(a)) :
from bisect import *
a = [1,1,2,2,2,4,7]
x = 3
insort_right(a,x)
print('a = ',a)
运行结果:
算法步骤:
这么说太抽象了,来做一个练习题
题目描述:
在一个神秘的岛屿上,有一支探险队发现了一批宝藏,这批宝藏是以整数数组的形式存在的,每个宝藏上都标有一个数字,代表了其珍贵程度。然而,由于某种神秘力量,这批宝藏的顺序被打乱了,探险队需要将宝藏按照其珍贵程度进行排序,以便更好地保护和研究它们。作为探险队的一员,肖恩需要设计合适的排序算法来将宝藏按照其珍贵程度从小到大进行排序,请你帮帮他。
输入描述:
输入第一行包括一个数字n,表示宝藏一共有n个;
输入第二行包括n个数字,第i个数字 a[i]表示第i个宝藏的珍贵程度;
数据保证1 < n < 1000,1 < a[i] < 10^6
输出描述:
输出n个数字,为对宝藏按照其珍贵程度从小到大进行排序的结果
参考答案:
n = int(input())
a = list(map(int,input().split()))
# 循环n-1次,每次获得第i大
for i in range(1,n):
for j in range(0,n-i):
if a[j] > a[j+1]:
a[j],a[j+1] = a[j+1],a[j]
print(' '.join(map(str,a)))
运行结果:
OK,今天就写到这里,我写这篇的时候,挺烧脑的,因为不管怎么改,都没有那种表述特别清楚的感觉,但我改到最后一遍的时候,终于达到了自己想要的效果,因为我终于理解我这次写的知识点了,有种成就感,哈哈。
就这样吧,下次继续,得睡觉了!