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

c语言中的冒泡法

发布时间: 2022-01-13 23:04:14

A. c语言中冒泡法解题

冒泡发其实顾名思义,就想气泡一样,将一个数组中最大的先推向最后一个元素位置,接着,将第二个大的数字有推向倒数第二个位置
main()
{
int i,j,n,temp;
int a[10];
scanf9"%d',&n);
printf("The original numbers:\n");
for( i=0,i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++) \*相邻两个进行比较,一共比较n-1次*\
for(j=0;j<n-i;j++) \*设置j,每次将最大的推向后的时候,j就会控制循环变量少循环一次,因为最大的已经推向后了,接下来将剩下元素中最大的向后推了*\
if( a[j-1]>a[i])
{ temp=a[j-1];a[j-1]=a[j];a[j]=temp;}\*temp只是用来将两个变量交换用的临时变量,例如,( a=5,b=6,要将a,b中的值交换,必须定义一个临时变量 temp,先将a中的值5放在temp中,在将b中的6给a,然后将temp中的5给b即可)*\
printf("\nThe sorted number:\n");
for(i=0;i<n;i++) printf("%d",a[i]);
}
我已经尽量采用最通俗的语言向你解释了,这也是我开始学习 c的时候用的方法,希望你能够明白。

B. c语言冒泡排序法详解

任意两个数作比较,大的放后面,小的放前面,然后大的在和下一个数比较,还是大的放后小的往前,以此类推,直到所有数比完了,然后输出

C. C语言简单冒泡法程序

#include<stdio.h>

voidsort(int*a,intlen)

{inti=0;

intj;

intt;

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

{

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

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}

intmain(intargc,char*argv[])

{

inta[10]={

-999,2,3,77,12,88,0,-8,99,100

};

inti=0;

sort(a,10);

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

{

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

}

return0;

}

(3)c语言中的冒泡法扩展阅读

冒泡排序法

#include"stdio.h"

voidmain()

{

inta[10];

inti,j,temp;

//输入10个整型数据

printf("Pleaseinputtennumbers: ");

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

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

//排序

for(i=0;i<9;i++)//10个数,10-1轮冒泡,每一轮都将当前最大的数推到最后

{

for(j=0;j<9-i;j++)//9-i,意思是每当经过一轮冒泡后,就减少一次比较

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

//打印排序结果

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

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

return0;

}

D. C语言的冒泡法

修改好了!!如下:

#include<stdio.h>

void bubble(int a[100], int n)
{
int i=0;
int j=0;
int temp=0;
char select; //选择

printf("Please Select size b/l: \n"); //选择从大到小或者从小到大
scanf("%s",&select); //运行中就是这里有错误,select没有给我一个输入就自己跳过去了,很奇怪
//修改好了,%c改为%s

switch (select)
{
case 'l': //从小到大
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] > a[i+1])
{

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

}break;

case 'b': //从大到小
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] < a[i+1])
{

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

}break;

default: printf("error\n");
}

for (i=0; i<n; ++i) //输出排列好的数组
{

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

printf("\n");

}

void main()
{ int n=0;
int i=0;
int a[100]={0};

printf(" Please enter the number of array :\n");
scanf("%d", &n); //输入数组元素的个数

printf(" Please enter the array :\n");

for (i=0; i<n; ++i) //输入数组里面的各元素
{
scanf("%d", &a[i]);
}

bubble(a, n);

}

E. C语言冒泡法

外循环用i,内循环不能再使用i,否则就乱了套了。

F. c语言的冒泡法

#include <iostream.h>
#define MaxSize 20
typedef int KeyType;
typedef char ElemType[10];
typedef struct
{
KeyType key;
ElemType data;
}LineList;

//交换排序

//冒泡排序
void BubbleSort(LineList R[],int n)
{
int i,j,exchange;
LineList tmp;
for(i = 0;i < n - 1;i++)
{
exchange = 0;
for(j = n - 1;j > i;j--)
if(R[j].key < R[j-1].key)
{
tmp = R[j];
R[j] = R[j-1];
R[j-1] = tmp;
exchange = 1;
}
if(exchange == 0)
return;
}
}

void main()
{
LineList R[MaxSize];
KeyType a[] = {75,87,68,92,88,61,77,96,80,72};
int n = 10,i;
for(i = 0;i < n;i++)
R[i].key = a[i];
cout << "排序前:";
for(i = 0;i < n;i++)
cout << R[i].key << " ";
cout << endl;
BubbleSort(R,n);
cout << "排序后:";
for(i = 0;i < n;i++)
cout << R[i].key << " ";
cout << endl;
}

G. 请教C语言中冒泡法的问题

#include<stdio.h>
void main()
{
int data[11], i, j, post, t;
printf("Please input 10 integer datas:\n");
for(i = 1; i<=10; i++) //输入10个数字
scanf("%d",&data[i]); //输入10个数字
for(i = 1; i <= 9; i++) //对10个数进行9次排序
{
post = i; //找出第i个数至第10个数中最小数所在位置post,假设i就是最小的那个数字
for(j = i+1; j <= 10; j++) //如果 j <= 9的话,那么会有一个数没有排序
if(data[j] < data[post]) // 意思是data[j]与暂时设定为最小的值data[post]进行比较,如果data[j]比data[post]还小,那么就进行交换, post = j; //记录data[j]的位置,以便后面的交换用到
if(post != i) //将第i个数与第post个数互换
{
t = data[i];
data[i] = data[post];
data[post] = t;
//data[i] = data[post]; 不能直接赋值,如果直接赋值就等于没有交换了 }
}
printf("The sorted numbers:\n");
for(i = 1; i <= 10; i++) //输出排序后的结果
printf("%d ", data[i]);
}

H. 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]);


}

(8)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;

}

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

I. c语言冒泡排序法

已通过测试,望采纳
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,a[100],t;
if(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
printf("\n");
return 0;
}