📅  最后修改于: 2020-12-10 03:49:58             🧑  作者: Mango
冒泡排序(也称为Exchange排序)是一种简单的排序算法。它的工作方式是重复遍历要排序的列表,一次比较两个项目,如果顺序错误则交换它们。重复遍历列表,直到不需要交换为止,这意味着对列表进行了排序。
这是所有排序算法中最简单的方法。
步骤1➤初始化
set 1 ← n, p ← 1
步骤2➤循环,
Repeat through step 4 while (p ≤ n-1)
set E ← 0 ➤ Initializing exchange variable.
步骤3➤比较,循环。
Repeat for i ← 1, 1, …... l-1.
if (A [i] > A [i + 1]) then
set A [i] ↔ A [i + 1] ➤ Exchanging values.
Set E ← E + 1
步骤4➤完成,或减小尺寸。
if (E = 0) then
exit
else
set l ← l - 1.
对于每次迭代,气泡排序将与最后一个未排序的元素进行比较。
一旦所有元素按升序排序,该算法将终止。
考虑以下未排序数组的示例,我们将在气泡排序算法的帮助下进行排序。
原来,
通行证1:
由于0 1,因此数组将保持原样。
现在a 1 > a 2 ,所以我们将交换它们两者。
由于2 3,因此数组将保持原样。
这里3 > a 4 ,所以我们将再次交换它们。
通行证2:
由于0 1,因此数组将保持原样。
这里1 2 ,因此数组将保持原样。
在这种情况下,a 2 > a 3 ,因此它们都将被交换。
通过3:
由于0 1,因此数组将保持原样。
现在1 > 2,所以它们都将被交换。
通行证4:
这里0 > a 1 ,所以我们将交换它们两者。
因此,对数组进行排序是因为不再需要交换。
输入:给定n个输入元素。
输出:对列表进行排序的步骤数。
逻辑:如果给我们n个元素,则在第一遍中将进行n-1个比较;在第二遍中,它将执行n-2;在第三遍中,它将执行n-3,依此类推。因此,可以通过以下方式找到比较的总数:
因此,气泡排序算法包含O(n 2 )的时间复杂度和O(1)的空间复杂度,因为它需要一些额外的存储空间来交换临时变量。