1.Python内置排序函数

从小到大排序:sorted(list)

从大到小排序:sorted(lst, reverse = True)

①不改变原有列表元素顺序,只返回排序后的结果

# sorted对列表进行排序之后会返回一个有序列表,并不会改变原有列表顺序
alist = [0, 10, 88, 19, 9, 1]
# 从小到大排序
print(sorted(alist))         
# 从大到小排序
print(sorted(alist, reverse=True))
# 可以看到原有列表没有改变
print(alist)

   输出结果:

[0, 1, 9, 10, 19, 88]

[88, 19, 10, 9, 1, 0]

[0, 10, 88, 19, 9, 1]

②改变原有列表元素顺序

# 将我们列表进行排序同时改变列表内容(变成一个有序表)
blist = [5, 14, 13, 26, 78, 17]
# 变成从小到大排序
blist.sort()
print(blist)
# 变成从大到小排序
blist.sort(reverse=True)
print(blist)

    输出结果:

[5, 13, 14, 17, 26, 78]

[78, 26, 17, 14, 13, 5]

 ③列表的 sort 方法和 sorted的区别

           sort 是 list 的方法,改变 list 对象的顺序,返回值为None。

           sorted 是Python内置方法,适用 iterable对象,返回值是新列表,不影响原来的 iterable 的顺序。

2.冒泡排序

(1) 比较相邻的元素,如果第一个比第二个大,就交换;第一个元素不比第二个大,就保持不变

(2) 一轮遍历,每两相邻元素,重复(1),最大放到队尾,

(3) 每次减少一个比较出的最大元素放到队尾,重复(2),直到 n-1 轮。

 

冒泡排序思路:

从第一个元素开始,对数组中两两相邻的元素进行对比,如:第一个元素与 第二个元素比较,若大于就交换这两个元素,若小于等于就保持不变; 然后第二个元素与 第三个比较......., 直到比较完最后一个元素为止。这样经过一轮比较后,将最大的数移动到末尾。然后再对剩下 n-1 元素按照同上方法进行两两比较、互换,得到次大数,完成二轮排序。如此进行两两比较互换,经过 n-1 轮比较后即可得到一个有序数组。

冒泡排序算法示例:

def bubble_sort(lists):
	# 得到比较次数
	count = len(lists) - 1
	# n个元素需要遍历n-1次
	for index in range(count, 0, -1):
		for sub_index in range(index):   # 比较两个相邻元素
			if lists[sub_index] > lists[sub_index+1]:
				lists[sub_index],lists[sub_index+1]=lists[sub_index+1],lists[sub_index]
	return lists
	
alist = [0, 10, 88, 19, 9, 1]
print(bubble_sort(alist))

  1)range介绍

print( [i for i in range(count, 0, -1)] )
   range 第一个参数是起始值,第二个参数是到这个值之前结束,第三个参数是 -1 递减方式每次减1。
   结果:[5, 4, 3, 2, 1]