0
点赞
收藏
分享

微信扫一扫

Python07排序

_karen 2022-01-31 阅读 59

排序算法

  1. 为什么排序? 为了快速查找

  2. 常见的查找和排序算法:

    排序:冒泡、选择、插入、希尔、快速、归并、堆排序、基数排序、计数排序…

    查找:二分查找

1.冒泡排序(稳定)

原理:

找出最大数放后面

5 8 1 -3 11 100 -55 99

冒泡排序:

	1、 5 1 -3 8 11 -55 99 100
	2、 1 -3 5 8 -55 11 99 100
	3、 -3 1 5 -55 8 11 99 100
	4、 -3 1 -55 5 8 11 99 100
	5、 -3 -55 1 5 8 11 99 100
	6、 -55 -3 1 5 8 11 99 100

代码:

def bubble_sort(arr):
	for i in range(len(arr)):
		for j in range(len(arr) - i -1):
			if arr[j] > arr[j + 1]:
				arr[j], arr[j + 1] = arr[j + 1], arr[j]
	return arr

2.选择排序(不稳定)

原理:

选择最小的放前面

5 8 1 -3 11 100 -55 99

选择排序:

	1、 -55 5 8 1 -3 11 100 99
	2、 -55 -3 8 1 5 11 100 99
	3、 -55 -3 1 8 5 11 100 99
	4、 -55 -3 1 5 8 11 100 99
	5、 -55 -3 1 5 8 11 100 99
	6、 -55 -3 1 5 8 11 100 99
	7、 -55 -3 1 5 8 11 99 100

代码:

def select_sort(arr):
	for i in range(len(arr)):
		temp = i
		for j in range(i, len(arr)):
			if arr[temp] > arr[j]:
				temp = arr[j]
		if temp != arr[i]:
			arr[i], arr[temp] = arr[temp], arr[i]
	return arr


def select_sort2(arr):
	for i in range(len(arr)):
		for j in range(i, len(arr)):
			if arr[i] > arr[j]:
				arr[i], arr[j] = arr[j], arr[i]
	return arr

3.插入排序(稳定)

原理:

5 8 1 -3 11 100 -55 99

插入排序:

1、 5 8            1 -3 11 100 -55 99
2、 1 5 8            -3 11 100 -55 99
3、 -3 1 5 8            11 100 -55 99
4、 -3 1 5 8 11            100 -55 99
5、 -3 1 5 8 11 100            -55 99
6、 -55 -3 1 5 8 11 100            99
7、 -55 -3 1 5 8 11 99 100 

代码:

def insert_sort(arr):
	for i in range(1, len(arr)):
		j = i
		while j > 0 and arr[j] < arr[j-1]:
			arr[j], arr[j - 1] = arr[j - 1], arr[j]
			j -= 1
	return arr

二分查找

def bin_search(arr, data):
	low = 0
	high = len(arr) - 1
	while low <= high:
		mid = (low + high) // 2
		if arr[mid] == data:
			return mid
		elif arr[mid] > data:
			high = mid - 1
		else:
			low = mid + 1
	return

举报

相关推荐

0 条评论