C语言编程高手请进!用冒泡法对20个数进行排序

如题所述

冒泡? 首先你要将你排序的二十个数放到数组 int Num[](以整型为例。如果有小数: double Num[]) 里面。然后定义排序的函数: Sort(int Num[],int n); 第一个参数是你要排序的数组,第二个就是数组里面数的个数。函数实现: Sort(int Num[],int n){ for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { int tmp; //定义一个临时放数组 if(Num[ i ]> Num[i +1] ) { tmp = Num[ i ]; //将较大数放到 tmp里面,防止Num[ i ] 的值被覆盖 Num[ i ] = Num [ i+1]; //让在前面的数等于较小的数。这样Num[ i ]的值被覆盖 Num[ i +1 ] = tmp ; //让后面的数等于较大值 // 这样就从第一个数开始,每两个进行比较。 将较大的数放在后面,一次循环过后,最大的一个数就在数组的最后面, // 在循环外边还有一次循环, 依次将第二大的数放在倒是第二个位置,依次类推。 } } } }} 就这样分析一下吧,源代码就不写了。PS :会冒泡排序 和 高手 根本就没有半点关系。 冒泡排序只是一种基础到不能基础的 算法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-18
main() { int array[10]; //定义10个元素的数组,用于保存要排序的整形 int i,j,min,stmp; for(i=0;i<10;i++) scanf("%d",&array[i]);//连续输入10个数,保存在array数组中 for(i=0;i<9;i++) { min=array[i];//首先取出第一个数字,作为最小的数字,排序嘛 for(j=i+1;j<10;j++)//将刚才取出的最小值与后面的所有数字进行比较 if(min>array[j]) //如果最小值大于某个值,就将这两个数字交换,保证min始终是最小值,这样i每循环一次,就得到一个没有排序的数字的最小值。就是冒泡,每次剩下的最小值冒泡出来了 { min=array[j]; stmp=array[i]; array[i]=array[j]; array[j]=stmp; } } for(i=0;i<10;i++) printf("%d ",array[i]); printf("\n"); } 参考资料: http://wenku.baidu.com/view/12fbbd22bcd126fff7050b71.html
第2个回答  2013-11-18
这个题昨天好像有人问过的,呵呵~~还是给你答案吧,望采纳~~ const int n=20;int i,j; for(i=0;i<n;i++)for(j=0;j<n-1-i;j++)if(a[j]>a[j+1]) // 从小到大{ int t=a[j]; a[j]=a[j+1]; a[j+1]=t;}