什么是冒泡排序(Bubble Sort)
冒泡排序的名字是因为元素排序的过程像水中的气泡一样一个一个的浮出水面,元素也一个一个从大到小(从小到大)的排序完成。
下面通过一个动图来看一看冒泡排序到底是怎么样移动的
自我笔记示意图data[4]={5,2,4,1};
以此类推,遍历了第一轮数组,该数组已经变成了dara[4]={2,4,1,5};但还不是从小到大
以此类推,遍历了第二轮数组,该数组已经变成了dara[4]={2,1,4,5};但还不是从小到大
总结,数组一共有4个数据,一共遍历了3轮数组,即可知道遍历几轮数据可从数组有效元素- 1得出。如上图,data一共有4个数据,即遍历4-1=3次。
代码实现(C语言)
#include<stdio.h>
int data[4]={5,2,4,1};
void Bubble_Sort()
{
int temp;
int i;
int j;
for(j=0;j<4;j++)
{
for(i=0;i<4;i++)
{
if(data[i] > data[i+1])
{
temp = data[i];
data[i]=data[i+1];
data[i+1]=temp;
}
}
}
}
int main()
{
int k;
Bubble_Sort();
for(k=0;k<4;k++)
{
printf("data[%d]=%d\n",k,data[k]);
}
return 0;
}
运行结果
data[0]=0
data[1]=1
data[2]=2
data[3]=4
静态变量的使用
#include<stdio.h>
int main()
{
int data[4]={5,2,4,1};
int k;
int temp;
int i;
int j;
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
{
if(data[i] > data[i+1])
{
temp = data[i];
data[i]=data[i+1];
data[i+1]=temp;
}
}
}
for(k=0;k<4;k++)
{
printf("data[%d]=%d\n",k,data[k]);
}
return 0;
}
运行结果
data[0]=1
data[1]=2
data[2]=4
data[3]=5
上面的程序是从小到大的,那么从大到小呢
#include<stdio.h>
int main()
{
int data[4]={5,2,4,1};
int k;
int temp;
int i;
int j;
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
{
if(data[i] < data[i+1])
{
temp = data[i];
data[i]=data[i+1];
data[i+1]=temp;
}
}
}
for(k=0;k<4;k++)
{
printf("data[%d]=%d\n",k,data[k]);
}
return 0;
}
运行结果
data[0]=5
data[1]=4
data[2]=2
data[3]=1