C语言冒泡排序法的排序规则:
将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡.根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮".如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止.
初始 R[1..n]为无序区.
第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置.
c语言冒泡排序的编程为:
#include stdio.h
void sort(int *a,int len)
{int i=0;
int j;
int t;
for(i=0;ilen-1;i++)[1]
{
for(j=0;jlen-i-1;j++)
if(a[j]a[j+1])
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
int main(int argc, char *argv[])
int a[10]={
};
int i=0;
sort(a,10);
for(i=0;i10;i++)
printf("%d ",a[i]);
return 0;
void sortMaopao(int *arr,int n)
int i,j,tmp;
if(n100)
return ;
for(i=0;in-1;i++)
for(j=i+1;jn;j++)
if(*(arr+i)*(arr+j))
tmp=*(arr+i);
*(arr+i)=*(arr+j);
*(arr+j)=tmp;
这个函数可以帮你实现由大到小排序,如果由小到大的话只需把if(*(arr+i)*(arr+j))这一句里面的 改成 就行了,输出的话可以在主函数调用之后再打印输出就行.
int?i,j,temp;
for(j=0;jn-1-i;j++)
temp=a[j];
a[j+1]=temp;
之间写这个
冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法.
具体方法是:
相邻数值两两交换.从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换.重复这样的过程,一直到最后没有数值需要交换,则排序完成.
C语言常见的排序算法:
①.、冒泡排序
基本思想:比较相邻的两个数,如果前者比后者大,则进行交换.每一轮排序结束,选出一个未排序中最大的数放到数组后面.
基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素).从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换.在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成.
基本思想:和交换排序不同的是它不用进行交换操作,而是用一个临时变量存储当前值.当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置.
基本思想:依次选出数组最小的数放到数组的前面.首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置.再从剩下数组中找出最小的数放到第二个位置.以此类推,直到数组有序.
以上内容参考? ?百度百科-排序算法、百度百科-c语言冒泡排序
#includestdio.h
void main()
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
scanf("%d",a[i]);
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");
printf(" %d",a[i]);
扩展资料:
冒泡排序算法的运作
①.、比较相邻的元素.如果第一个比第二个大(小),就交换他们两个.
简单的表示
void swap(int *i, int *j)
int temp = *i;
*i = *j;
*j = temp;
int main()
int i,j;
for (i = 0; i 10; i++)
if (a[j] a[j-1])
swap(a[j], a[j-1]);
printf("%d\n", a[i]);
#includestdlib.h
void mao_pao(int *a,int n)
int i,j,temp,flag;
for(i=0;in-1flag;++i)
flag=0;
for(j=0;jn-1;++j)
flag=1;
int *a,i,n;
a=(int *)malloc(100);
if(NULL==a)
printf("allocation failture\n");
exit(1);
printf("请输入你要排序的元素的个数\n");
scanf("%d",n);
printf("现在开始输入%d个元素\n",n);
for(i=0;i!=n;++i)
mao_pao(a,n);
printf("排序后为:\n");
printf("\n");
free(a);
这是排数字的,要排字母的话,只需把a的类型改一下,和输出输入的格式改一下就ok了