目录
什么是冒泡排序?
冒泡排序(Bubble Sort)是一种最基础的交换排序。之所以叫做冒泡排序,是因为每一个元素都可以像小气泡一样,根据自身数值大小,一点点向数组的一侧移动。
冒泡排序的原理:
想象有一个指针指向第一个数,每一趟排序都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面。然后指针向后挪一位,继续比较两个相邻的两个数的大小关系。重复此步骤,直到所有的数归位。
注意点:
每一趟排序只能确定一个数的归位,第一趟只能确定末位上的数归位,第二趟只能确定倒数第二位上的数归位。如果有n个数进行排序,只需将n-1个数归位,也就是要进行n-1趟操作。
原理图如下:
python实现冒泡排序:
def bubble_sort(nums):
# 设置一个flag,用来判断某次循环是否发生了变换
flag = True
for i in range(len(nums)-1): # 这个i就相当于指针,用来决定遍历几趟
for j in range(len(nums)-1-i): # j指向具体的数值,用来进行一趟遍历
if nums[j] > nums[j+1]:
nums[j],nums[j+1] = nums[j+1],nums[j]
flag = False #一趟可以遍历所有未曾排序的数
#如果没有发生交换,说明已经排序好了,无需继续排序
if flag:
break
return nums
array = [8,5,0,4,-4]
print(f'冒泡排序之前的列表:{array}')
print(f'排序之后:{bubble_sort(array)}')
C++实现冒泡排序:
#include<stdio.h>
int main(void)
{
int a[10]={6,4,3,2,7,8,9,10,1,5};
int i,k,w;
for(i=0;i<9;i++)
{
for(k=0;k<9-i;k++)
{
if(a[k]>a[k+1])
{
w=a[k];
a[k]=a[k+1];
a[k+1]=w;
}
}
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}