冒泡排序呢,又叫做交换排序,来源就是观察水中的气泡变化而想到的一种排序方法,,就是数值小的泡泡慢慢往上浮嘛!
什么原理呢?四个字形容:“重复走访!”就是从第一个元素开始比较,比较相邻两个元素的大小,要是这两个大小的顺序和要求的相比有错误的话,就把这两个对调一下,对调后再进行下一个元素的比较,扫描一轮又一轮,日复一日,年复一年!直到排到您满意为止!
光说不行,画幅图看看吧: 快捷键 windows键+R打开命令窗口输入mspaint, 倒要看看哪个不开眼的还从开始->附件里面打开画板!
直接上图,更直观:
————————————————————————————————————————————
————————————————————————————————————————————
———————————————————————————————————————————————————
——————————————————————————————————————————————————
下面来把代码写一下:
#include <iostream>
using namespace std;
int main()
{
int array[6] = {10, 3, 7, -8, 12, 0};
int i; //定义两个变量用于内循环和外循环,没毛病吧!
int j;
for(i = 0; i < 6; i ++) //
{
for(j = 1; j < 6 - i; j ++)
{
if(array[j - 1] > array[j])//如果前面的元素大于后面的元素,就交换。
{
int tmp = array[j];
array[j] = array[j - 1];
array[j - 1] = tmp;
}
}
}
for(i = 0; i < 6; i ++)
{
printf("array[%d] = %d\n", i, array[i]);
}
system("pause");
return EXIT_SUCCESS;
}
注:
————————————————————————————————
我们再来换一种方式来写冒泡排序;
还是这组数:10, 3, 7, -8, 12, 0
直接上代码!
#include <stdio.h>
void sort(int *a, int len)
{
int i, j, m;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if ( a[j] > a[j + 1])
{
m = a[j];
a[j] = a[j + 1];
a[j + 1] = m;
}
}
}
}
int main(void)
{
int a[6] = { 10, 3, 7, -8, 12, 0 };
int i = 0;
sort(a, 6);
for (i = 0; i < 6; i++)
{
printf("%d\n", a[i]);
}
printf("\n");
system("pause");
return 0;
}
——————————————————————————————————————————————
洗洗睡觉吧!!!!