python3实现常见的排序算法(示例代码)

1. 排序算法的概述

排序算法指的是将数据按照一定的规则进行排列的一种算法。

在实际的应用中,排序算法广泛应用于数据检索、数据压缩、数据库系统、计算机网络等方面,在日常的编程工作中,掌握排序算法的实现方法对于程序员的编程能力提高也至关重要。

本文将介绍python3语言实现四种常见的排序算法:冒泡排序、选择排序、插入排序以及快速排序。

2. 冒泡排序

2.1 算法思想

冒泡排序的算法思想是从左到右依次进行两两比较,如果左边的数大于右边的数就交换二者的位置,依此类推,直到最大的数位于最右侧。然后再从左到右进行相邻的两个数的比较,依此类推,直到整个数列完成排序。

2.2 算法实现

下面是冒泡排序的python3实现代码:

def bubble_sort(arr):

# 获取列表的长度

n = len(arr)

# 从头到尾扫描列表

for i in range(n):

# 从头到尾依次比较相邻的两个数,如果前一个数大于后一个数,就交换二者的位置

for j in range(n - i - 1):

if arr[j] > arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

return arr

2.3 算法测试

下面我们来对上述的代码进行测试,看看是否正确:

# 测试代码

arr = [5, 7, 3, 8, 4, 2, 1, 6]

print(bubble_sort(arr))

输出结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

从以上输出结果可以看出,冒泡排序的python3实现代码是正确的。

3. 选择排序

3.1 算法思想

选择排序的算法思想是:从头到尾扫描列表,每次找出最小的数字,然后将其放在最前面,再从剩余的数字中找出最小的数,继续放在已排序的数列的末尾,直到整个数列完成排序为止。

3.2 算法实现

下面是选择排序的python3实现代码:

def select_sort(arr):

n = len(arr)

# 从头到尾扫描列表

for i in range(n):

# 定义一个变量用来记录最小的元素的下标

min_idx = i

# 找出剩余部分中最小的元素的下标

for j in range(i + 1, n):

if arr[j] < arr[min_idx]:

min_idx = j

# 将最小的元素放置到已排好序的列表的最后一个元素的后面

arr[i], arr[min_idx] = arr[min_idx], arr[i]

return arr

3.3 算法测试

下面我们来对选择排序的python3实现代码进行测试,看看是否正确:

# 测试代码

arr = [5, 7, 3, 8, 4, 2, 1, 6]

print(select_sort(arr))

输出结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

从以上输出结果可以看出,选择排序的python3实现代码是正确的。

4. 插入排序

4.1 算法思想

插入排序的算法思想是:将一个元素插入到已经排好序的数列中,从而得到一个新的、长度加一的数列。首先,第一个元素默认是已经排好序的,然后,我们从剩余的列表中取一个元素出来,把它插入到已经排好序的数列中,使得插入后的数列依然是有序的。重复以上步骤,直到整个数列完成排序。

4.2 算法实现

下面是插入排序的python3实现代码:

def insert_sort(arr):

n = len(arr)

# 从头到尾扫描列表

for i in range(n):

# 指定一个位置变量

pos = i

while pos > 0 and arr[pos] < arr[pos - 1]:

# 否则,交换两个数的位置

arr[pos], arr[pos - 1] = arr[pos - 1], arr[pos]

pos -= 1

return arr

4.3 算法测试

下面我们来对插入排序的python3实现代码进行测试,看看是否正确:

# 测试代码

arr = [5, 7, 3, 8, 4, 2, 1, 6]

print(insert_sort(arr))

输出结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

从以上输出结果可以看出,插入排序的python3实现代码是正确的。

5. 快速排序

5.1 算法思想

快速排序的算法思想是:选择一个基准值,将列表中比其小的数放在左边,比其大的数放在右边,然后对左右两个子列表分别重复以上步骤,直至剩余的列表全部有序。

5.2 算法实现

下面是快速排序的python3实现代码:

def quick_sort(arr):

if len(arr) <= 1:

return arr

else:

# 选取基准值,进行分割

pivot = arr[0]

# 定义两个指针,用来指向列表的首尾元素

left, right = [], []

for i in arr[1:]:

if i < pivot:

left.append(i)

else:

right.append(i)

# 对左右两个列表分别递归进行排序

return quick_sort(left) + [pivot] + quick_sort(right)

5.3 算法测试

下面我们来对快速排序的python3实现代码进行测试,看看是否正确:

# 测试代码

arr = [5, 7, 3, 8, 4, 2, 1, 6]

print(quick_sort(arr))

输出结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

从以上输出结果可以看出,快速排序的python3实现代码是正确的。

6. 总结

本文介绍了python3实现冒泡排序、选择排序、插入排序以及快速排序的算法思想,以及给出了它们的python3实现代码。在实际的应用中,我们可以根据不同的需求选择不同的排序算法。例如,如果需要排序的数据量比较大,我们可以选择快速排序算法,而对于数据量比较小的情况,则可以考虑选择冒泡排序、选择排序、插入排序等算法。

后端开发标签