python-简单的算法题
一、冒泡排序
''' 冒泡算法 冒泡排序原理就是循环遍历数组,比较相邻两个数的大小,重复比较直到排序完成 N个数字要排序完成,总共要进行N-1趟排序,第i趟的排序次数为(N-i) 次 '''1 def bubbleSort(arr): 2 n = len(arr) 3 # 遍历所有元组元素 4 for i in range(n): 5 # 每一趟循环最后一位数都会确定,所以需要去掉最后一个数 6 for j in range(0,n-i-1): 7 if arr[j] > arr[j+1]: # 升序大于号,降序小于号 8 arr[j],arr[j+1] = arr[j+1],arr[j] 9 return arr 10 11 arr = [23,10,32,67,43,52] 12 bubbleSort(arr) 13 print("排序后的数组为:") 14 for i in range(len(arr)): 15 print("%d"%arr[i])
二、字符串和列表排序
'''
编写一个函数,实现对字符串的排序
大多数排序操作是针对列表的,所以需要先将字符串转换成列表,进行排序,然后再合并成字符串
运用list的sort()函数,sort()函数对原列表进行排序,没有返回值
或者通过sorted()函数,sorted()函数对列表可迭代的对象进行排序操作,返回一个新的list
sort 缺省为升序,降序排列增加reverse=True参数
'''
1 # 方法一 sort() 2 def sort(s): 3 ls = list(s) 4 ls.sort() 5 s1 = "".join(ls) 6 return s1 7 8 s = "3649208" 9 print(sort(s)) 10 11 12 # 方法二 sorted() 13 def sort(s): 14 ls = sorted(s) 15 s1 = "".join(ls) 16 return s1 17 18 s = "345110" 19 print(sort(s))
三、字符串反转
'''
实现输入一个字符串,并将该字符串反转输出
方法一:字符串切片 a[i:j:s] 当s<0时,i缺省时,默认为-1;j缺省时,默认为-len(a) -1
a[::-1] 相当于a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序
方法二:将字符串转换为列表,用列表的reverse()方法
'''
1 # 方法一 字符串切片法 2 a = input("please input str:") 3 print(a[::-1]) 4 5 6 # 方法二 转换成列表,用列表的reverse()方法 7 a = input("please input str:") 8 l = list(a) 9 l.reverse() 10 print("".join(l))
四、字符串计数
''' 列出1-1000中包含1的数字 '''1 for i in range(1001): 2 if str(i).find("1") == 0: 3 print(i)
'''
生成包含1000个0-100之间的随机整数,并统计每个元素出现的次数
'''
1 import random 2 ls = [random.randint(0,100) for i in range(1000)] 3 st = set(ls) # set()函数创建一个无序不重复元素集 4 for i in st: 5 print(i, "出现的次数:", ls.count(i))
'''
统计字符串中各字符的个数
'''
1 str = input("请输出字符串:") 2 dt = {} 3 for i in str: 4 dt[i] = str.count(i) 5 print(dt)