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)

相关