/********************************************
*设 计 者:玄叶-特斯拉 日期:2016-8-20
*修 改 者:无 日期:无
*功能描述:用冒泡法排序(升序)
*设计思路:每次将相邻两个数进行比较,将小的调到前面
*********************************************/
/*****************头文件*********************/
#include <stdio.h>
/******************主函数**********************/
int main(void)
{
int arr[9]={3,4,6,12,1,5,9,10,2};
int i=0, j=0, temp, k=0;
printf("\
/***********************************************************\n\
*设 计 者:玄叶-特斯拉 日期:2016-8-20 \n\
*功能描述:用冒泡法排序 \n\
*设计思路:每次将相邻两个数进行比较,将小的调到前面 \n\
************************************************************/");
printf("\n\n\n数组arr[9]={3,4,6,12,1,5,9,10,2}\n\n按照从小到大排序过程如下:\n\n");
for(i=0;i<8;i++)
{
printf("第%d躺需比较%d次:\n",(i+1),(8-i));
for(j=0;j<8-i;j++)
{
if(arr[j]>arr[j+1]) //相邻两个比较
{
printf("第%d次比较中 %2d>%2d ,将后者调到前之后变成:",j+1,arr[j],arr[j+1]);
//将小的调到前面
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//打印当前数组排序状态
for(k=0;k<9;k++)
{
printf("%d ",arr[k]);
}
printf("\n");
}
else
{
printf("第%d次比较中 %2d<%2d ,无需交换 ",j+1,arr[j],arr[j+1]);
for(k=0;k<9;k++)
{
printf("%d ",arr[k]);
}
printf("\n");
}
}
printf("\n");
}
//打印最终排序后的数组
printf("arr[]=");
for(i=0;i<9;i++)
{
printf("%d ",arr[i]);
}
printf("\n\n");
return 0;
}
冒泡法排序详细过程
最新推荐文章于 2024-06-07 09:15:00 发布