
在总结冒泡排序前:先从头开始,对冒泡排序(BubbleSort)进行一个系统性了解:
冒泡排序法,又称交换排序法,是从观察水中的气泡变化构思而成的,原理是从第一个元素开始,比较相邻元素的大小,如果大小顺序不对,则进行两个数据的调换,就好像气泡从水中逐渐上升到水面上一样。经过这样的扫描,就可以一次接着一次的排序,直到完成所有元素的排序工作。
如图,我使用5个元素:14,11,25,18,44来进行冒泡排序法的演示:
为了更直观的体现冒泡多次排序,再换一组数据进行排序 55,23,87,62,16:
如何通过数学的方式进行表达呢?
原理已经基本清楚,将思路代码化:
#include
#include
void Bubble_sort(int array[], int n)//定义排序函数
{
int j = 0;
int I = 0;
int temp;
for (i = 0; i < n-1;i ++){//与除自己以外的其他9个元素进行比较
for (j = 0; j < n-1 - i; j++)//n-1-i的意思是每比较一趟元素就会少一个
{
if (array[j] > array[j+1])//升序排法,如果前面的数大于后面的数,即调换位置
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
int main()
{
int array[10];
int i;
printf("请输入10个数\n");
for (i = 0; i < 10; i++){//接收用户在终端中输入的数值,并添加进数组。
scanf("%d", &array[i]);
}
printf("选择排序前的各元素是:");
for (i = 0; i < 10; i++){
printf("%d ", array[i]);
}
printf("\n经过冒泡排序后的数组是:");
Bubble_sort(array, 10);
for (i = 0; i < 10; i++){
printf("%d ", array[i]);
}
return 0;
}
如图,我输入十个数据:10,9,8,7,6,5,4,3,2,1
输出完成
如图,从程序的执行结果来,冒泡排序已经执行完毕,并且把数组中的十个元素从小到大排序了出来。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)