数据结构的八大排序之冒泡排序、选择排序和插入排序
2024-01-13 08:05:58
在计算机科学中,排序算法是用于对一组元素进行排序的算法。排序算法有很多种,每种算法都有其不同的时间复杂度、空间复杂度、稳定性等特性。在这篇文章中,我们将介绍数据结构中的八种常见排序算法,分别是:
- 冒泡排序
- 选择排序
- 插入排序
- 归并排序
- 快速排序
- 堆排序
- 桶排序
- 基数排序
在这篇文章中,我们将介绍前三种排序算法:冒泡排序、选择排序和插入排序。
冒泡排序
冒泡排序是一种简单直观的排序算法。它通过比较相邻元素的大小,将较大的元素向后移动,较小的元素向前移动,直到所有元素都按顺序排列。
冒泡排序的时间复杂度为 O(n^2),空间复杂度为 O(1)。它是一种不稳定的排序算法,这意味着它可能会改变相等元素的相对顺序。
冒泡排序的伪代码如下:
procedure bubbleSort(array)
for i := 0 to length(array) - 2 do
for j := 0 to length(array) - i - 1 do
if array[j] > array[j + 1] then
swap(array[j], array[j + 1])
选择排序
选择排序是一种简单的排序算法。它通过找到数组中最小(或最大)的元素,然后将其与第一个(或最后一个)元素交换,然后找到数组中次小(或次大)的元素,将其与第二个(或倒数第二个)元素交换,以此类推,直到所有元素都按顺序排列。
选择排序的时间复杂度为 O(n^2),空间复杂度为 O(1)。它是一种不稳定的排序算法。
选择排序的伪代码如下:
procedure selectionSort(array)
for i := 0 to length(array) - 2 do
minIndex := i
for j := i + 1 to length(array) - 1 do
if array[j] < array[minIndex] then
minIndex := j
swap(array[i], array[minIndex])
插入排序
插入排序是一种简单的排序算法。它通过将一个元素从数组中删除,然后将其插入到数组中适当的位置,直到所有元素都按顺序排列。
插入排序的时间复杂度为 O(n^2),空间复杂度为 O(1)。它是一种稳定的排序算法,这意味着它不会改变相等元素的相对顺序。
插入排序的伪代码如下:
procedure insertionSort(array)
for i := 1 to length(array) do
key := array[i]
j := i - 1
while j >= 0 and array[j] > key do
array[j + 1] := array[j]
j := j - 1
array[j + 1] := key
总结
在本文中,我们介绍了数据结构中的三种常见排序算法:冒泡排序、选择排序和插入排序。这三种算法的时间复杂度都为 O(n^2),空间复杂度为 O(1)。冒泡排序和选择排序都是不稳定的排序算法,而插入排序是稳定的排序算法。
在下一篇博文中,我们将介绍另外五种排序算法:归并排序、快速排序、堆排序、桶排序和基数排序。这些算法的时间复杂度、空间复杂度和稳定性都有所不同。