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;
}