本文目录一览:
- 1、C语言编程:改进冒泡排序程序,使其当数据已经有序时,直接结束排序过程。请给出运算结果。
- 2、c语言冒泡法排序问题?
- 3、C语言中选择排序法和冒泡排序法代码。
- 4、C语言中选择法排序和冒泡法排序有什么区别
C语言编程:改进冒泡排序程序,使其当数据已经有序时,直接结束排序过程。请给出运算结果。
#include stdio.h
#include stdlib.h
void Bubble(int *a,int n) //对n个整数从小到大排序
{int i,j,t,k;
for(i=0;in-1;i++)
{k=1;
for(j=0;jn-1-i;j++)
if(a[j]a[j+1])
{k=0;t=a[j];a[j]=a[j+1];a[j+1]=t;}
if(k)break;
}
}
int main()
{int m,i;
scanf("%d",m);
int *p=(int *)calloc(m,sizeof(int));
for(i=0;im;i++)
scanf("%d",p+i);
Bubble(p,m);
for(i=0;im;i++)
printf("%d ",*(p+i));
return 0;
}
c语言冒泡法排序问题?
不能,比如输入2 5 3 6 8,在第二个for循环当中
【for(j=i+1;jn;j++)
{if(a[i]a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1;
} 】
你a[i]用的i,而i=0,那么总是a[0]=2与5 3 6 8比,
而a[0]是最小的一个,那么怎么也进不了if循环中
flag就为0咯,又return,就结束咯
换下
for(i=1;in;i++)
{
flag=0; //初始值为0
for(j=0;jn-i;j++)
{if(a[j]a[j+1]) //如果前面的数比后面的数大,进行交换
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
flag=1; //如果发生交换,标识变量设为1
}
即把小数在前就放前不动,拿后面的比,而不是总拿小数去与其他的比
C语言中选择排序法和冒泡排序法代码。
选择排序:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t;
for(i=0;in-1;i++)
{ min=i; //min:当前最小值下标
for(j=i+1;jn;j++) //扫描余下的部分
if(a[min]a[j]) //若有其它元素更小,就记录其下标
min=j;
if(min!=i) //保若最小值不在排序区首位,就换到首位
{t=a[min]; a[min]=a[i]; a[i]=t;}
}
}
冒泡排序:
void bubble_sort(int a[], int n) //传入数组的要排序的元素个数
{ int i, j, t;
for (j=0; jn-1; j++) //n个元素比较n-1轮
for (i= 0; in-1-j;i++) //比较相信的两个数
if(a[i]a[i+1]) //若大小顺序不符,就交换
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;
}
C语言中选择法排序和冒泡法排序有什么区别
楼主,如果用一组数,按小到大顺序排列,如果用冒泡法,原理是这样的,就是把最小的数放在最后,不断地把底层的较大的数冒泡升上来,选择法是用一个变量不断地选择小的数,将值付给变量再通过变量付给相应位置的数组元素…