今天刷题时,遇见一道将数组中元素排序的题。有些忘了,就回顾复习一下
冒泡排序:是一种算法,每趟将相邻的两个数比较,把一系列的数据按照一定的顺序进行显示(从小到大或者从大到小)
算法思想
- 一共需要比较的趟数(数组长度 - 1),用外层for循环
- 第n趟需要交换的次数(数组长度-n),用内层for循环
以C程序为例进行演示
#include<stdio.h>
int main(void)
{
int temp; //temp用于交换相邻元素的值
int i,j;
int a[]={5,4,3,2,1};
for(i=1;i<5;i++) //外层计数变量,i
{
for(j=0;j<5-i;j++) //内层计数变量,j
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<5;i++) //将数组中的元素循环输出即可,也可以使用其他的计数变量
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
外层循环变量尽量从1开始计数,它只表示要走的趟数
内层变量从0开始计数,它才涉及到每个元素,要进行交换
Computational Results
详细排序原理示意图可点击下面链接
https://blog.youkuaiyun.com/weixin_41457674/article/details/98517098