C语言 冒泡排序法的代码

C语言的冒泡排序法的代码

#include<stdio.h> 

void main() 

int a[10]; 

int i,j,t; 

printf("input 10 numbers:\n"); 

for(i=0;i<10;i++) 

scanf("%d",&a[i]);

for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/ 

for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/ 

if(a[i]>a[i+1]) /*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/ 

t=a[i]; 

a[i]=a[i+1]; 

a[i+1]=t; 

printf("the sorted numbers:\n"); 

for(i=0;i<10;i++) 

printf(" %d",a[i]);


}

扩展资料:

冒泡排序算法的运作

1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。

3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。

4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。

简单的表示

#include <stdio.h>

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 9; j > i; j--)//从后往前冒泡

{

if (a[j] < a[j-1])

{

swap(&a[j], &a[j-1]);

}

}

}

for (i = 0; i < 10; i++)

{

printf("%d\n", a[i]);

}

return 0;

}

参考资料来源:冒泡排序-百度百科

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-20
冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。

“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。
对于具有N个元素的数组R[n],进行最多N-1轮比较;
第一轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]) ; 最大的元素会被移动到R[N]上。
第二轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]);第二大元素会被移动到R[N-1]上。
以此类推,直到整个数组从小到大排序。

想【了解更多有关C语言】的详情,推荐咨询达内教育。达内教育已从事19年IT技术培训,累计培养100万学员,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通;自主研发的26大课程体系更是紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术。

感兴趣的话点击此处,免费学习一下本回答被网友采纳
第2个回答  2018-05-18
冒泡法排序的原理是相邻的两个数进行比较,现在以“输入10个数,对它们按小到大的顺序排序”这道题,来展示冒泡法排序。
#include <stdio.h>
int main(){
int a[10];
int i,j,t;
printf (" input 10 numbers: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i] );
printf ("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers: \n");
for(i=0;i<10;i++)
printf( "%d",a[i]);
printf("\n");
return 0;
}
第3个回答  推荐于2017-09-27
#include <stdio.h>
void bubble_sort(int a[], int n)
{int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
if(a[i] > a[i + 1])
{temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;}
}

int main()
{int number[10] = {95, 45, 15, 78, 84, 51, 24, 12, 38, 97};
int i,SIZE=10;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
printf("%d", number[i]);
printf("\n");
}
第4个回答  2009-10-13
main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
for(j=0;j<=9;j++)
{ for (i=0;i<10-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=1;i<11;i++)
printf("%5d,",a[i] );
printf("\n");
}

参考资料:http://zhidao.baidu.com/question/34760520.html?si=3&wtp=wk

本回答被网友采纳