当前位置:首页 » 编程语言 » c语言冒泡程序代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言冒泡程序代码

发布时间: 2022-04-05 05:47:35

c语言冒泡排序法代码

冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明


冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。

❷ 求指导C语言的冒泡排序代码

main()函数修改如下:

intmain()
{
intapk(int*);
inta[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
apk(a);
for(i=0;i<10;i++)
printf("%d",a[i]);
return0;
}

apk()函数修改如下:

intapk(inta[])
{
for(k=0;k<9;k++)
for(i=0;i<10-k;i++)
if(a[i]>a[i+1])
{
j=a[i];
a[i]=a[i+1];
a[i+1]=j;
}
}

❸ C语言程序冒泡排序

#include<stdio.h>

intmain()
{
inta[10];
intcount=0,i,j,temp;
charc;
printf("pleaseinputnumbers:");
while(1)
{
scanf("%d",&a[count]);
count++;
if(c=getchar()==' ')break;
}//输入
for(i=0;i<count;i++)
for(j=0;j<count-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}//冒泡,较大的数沉下去
printf("thesortednumbers:");
for(i=0;i<count;i++)printf("%d",a[i]);
}

❹ c语言!!!冒泡排序

for(i=0;i<3;i++){
for(j=i+1;j<4;j++)
{
if(a[i]<a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
根据你的代码来算的话,最外层循环a[0]=5,内层循环3.7.1,内层第一次循环比较5和3,不交换,内层第二次循环比较5和7,互换,此时a[0]=7,第三次内层循环比较7和1,不互换,第一次外层循环结果为7 3 5 1。随后执行外层第二次循环,具体同上...最后执行完毕为7 5 3 1了。

❺ C语言冒泡排序

# include<stdio.h>
main()
{
int i,j,n,a[10],m;
printf("Enter n(n<=10):");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++){
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]){/*不满足if里面的条件就交换*/
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}测试用例:过程写的不是很详细,只写了主要部分,如果有什么不明白的地方欢迎追问。

❻ c语言冒泡排序(要求输出每一步排序过程)代码

for(i=0;i<n_length;i++){
/*这里是冒泡*/
for(j=0;j<n_length-1;j++){
if(a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
/*只要多加个显示的循环不就行了*/
for(k=0;k<length;k++){
pritf("%d\t",a[k]);
printf("\n");
}
}

❼ 冒泡排序的C语言代码

程序如下:

#include<malloc.h>
#include<stdio.h>
intmain(void)
{
inti,j,t,num;
int*p;

printf("请输入要排序的数的个数:num=");
scanf("%d",&num);
p=(int*)malloc(num*sizeof(int));

//输入要排序的数
for(i=0;i<num;++i)
{
printf("请输入第%d个要排序的数p[%d]= ",i+1,i);
scanf("%d",&p[i]);
}

//冒泡排序
for(i=0;i<num-1;++i)
{
for(j=0;j<num-1-i;++j)
{
if(p[j]>p[j+1])//>表示升序<表示降序
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}

//输出已经排序好的数
printf("输出已经排序好的数");
for(i=0;i<num;++i)
{
printf("%d",p[i]);
}
printf(" ");

return0;
}

程序运行结果:

随机输入十个数:

❽ 关于C语言冒泡排序

if(num[j+i]<num[j])

改为

if(num[j+1]<num[j])

即可。

完整的修改后程序如下:

//---------------------------------------------------------------------------

#include<stdio.h>
void main()
{
int num[]={2,5,1,4,3,0,6,13,7,12,8,11,10,9};
int count=sizeof(num)/sizeof(num[0]);
int tmp,i,j; /*建议将i和j的定义放在这里,ANSI C不允许你那样定义变量*/
int swapped; /*建议用int,在ANSI C中没有bool类型*/
for(i=0;i<count;i++)
{
swapped=0; /*建议*/
for(j=0;j<count-i-1;j++)
{
if(num[j+1]<num[j]) /**** 注意这里!应该是num[j+1]而非num[j+i] ****/
{
tmp=num[j+1];
num[j+1]=num[j];
num[j]=tmp;
swapped=1; /*建议*/
}
}

if(!swapped)

break;
}
for(i=0;i<count;i++)
{
printf("%d ",num[i]);
}

}
//---------------------------------------------------------------------------

*********************************

标准C语言中没有布尔类型(也就是你的程序中的bool类型),逻辑真和逻辑假用非0和0表示,非0值表示逻辑真(也就是你程序中的true),0表示逻辑假(也就是你程序中的false)。

这些修改只是建议,除了if语句部分的修改是必须的之外,如果你的程序不考虑移植性,其它部分可以保留原样。

❾ c语言 冒泡排序

第一个程序数组的个数不到10,第二个程序数组到了10个,
for (int j=0; j<9-i ; j++) 这句应该改为

for (int j=0; j<9-i -1; j++)

否则在第二程序就会出现数组访问越界的问题,
而第一个程序由于数据不到10个,所以不会出现越界。

❿ C语言冒泡排序。

#include<stdio.h>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers: ");

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: ");

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

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


}

(10)c语言冒泡程序代码扩展阅读:

冒泡排序算法的运作

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 ", a[i]);

}

return 0;

}

参考资料来源:冒泡排序-网络