冒泡排序是⼀种基础的排序算法,其基本思想是比较相邻的两个元素,如果它们的顺序错误就交换它们的位置,直到整个序列有序为止。 以下是冒泡排序的具体实现过程:
1. 从序列的第一个元素开始,对相邻的两个元素进行比较,如果顺序错误就交换它们的位置,使较 小的元素排在前面,较大的元素排在后面。
2. 在对序列中的所有相邻元素都进行了一次比较之后,第一轮排序结束,此时最后一个元素已经是 整个序列中最大的元素。
3. 对剩下的未排序的元素重复执行步骤 1 和步骤 2,直到整个序列都有序为止。
• 特别地,若在某一轮排序中未进行交换操作,则当前序列已经是升序状态,可以结束排序。
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
//数组元素个数
int i = 0;
for (i = 0; i < sz; i++)
{
scanf("%d", &arr[i]);
}//输入数据
for (i = 0; i < sz - 1; i++)
{//有sz个数,只需要比较sz-1次
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{ //为什么要-i,比如当你进行了2次冒泡
//第3次冒泡只需要比到sz-1-2的位置
if (arr[j] > arr[j + 1])
{
//交换顺序
int tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
}
}
}
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}