C语言冒泡法
冒泡排序每一趟排序把最大的放在最右边。
比如:
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换: 56 87 45 78
87和45交换: 45 87 78
87和78交换: 78 87
到此第一趟排序结束,接下来的每一趟排序都是这样。
#includevoid Print(int *num, int n){ int i; for(i = 0; i num[j + 1]) { int temp = num[j]; num[j] = num[j + 1]; num[j + 1] = temp; } Print(num, n); } } return;}int main(){ int num[8] = {87, 12, 56, 45, 78}; Bubble_Sort(num, 5); return 0;}
#include
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]);
}
扩展资料:冒泡排序算法的运作
1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。
3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。
4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。
简单的表示
#include
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;
}
参考资料来源:冒泡排序-百度百科
#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]);
}
扩展资料:
冒泡排序算法的运作
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;
}
参考资料来源:冒泡排序-百度百科
第3个循环体,分为内外两层循环,内层循环的意思是,每一次进入该循环体时的循环次数都比上一次少1次,if语句就是比对当前元素和下一个元素哪个大,如果当前的大,用第三方变量作为中介进行交换(两个杯子的水如何交换,这个你应该听过吧)
内层循环的每一次大循环,都已经将目前的最大值转移到了后面,所以第2次就不需要在比对这个数据了
4 3 2 1
4>3==3 4 2 1
4>2==3 2 4 1
4>1==3 2 1 4
3 2 1 4
3>2==2 3 1 4
3>1==2 1 3 4
2 1 3 4
2>1==1 2 3 4
冒泡就是这样的顺序
第4个循环体,就是输出排序之后的数组数据
c语言中的冒泡法 ,为何要进行n-1次运算。
写个常用的冒泡排序;include <stdio.h> void main(){ int num[6]={6,5,4,3,2,1};int i,j,temp;for(i=1;i<=5;i++)\/\/这里改成6也没有关系,,for(j=0;j<6-i;j++)if(num[j]>num[j+1]){ temp=num[j];num[j]=num[j+1];num[j+1]=temp;} for(i=0;i<6;i++...
求关于c语言 冒泡排序法的讲解
冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有 些类似。其具体做法是 (1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果 a(n)
C语言 用冒泡法对20个整数进行排序(升序)。
include <stdio.h> void main(){ int i, n=30, j, m;int a[]={210,108,65,49,72,88,67,5,19,36, 90,35,1,112,215,6,23,46,51,29, 77,19,0,55,27,48,18,22,30,56};printf("\\nThese integers are as below:\\n\\n");for (i=0; i<n; i++){ printf("%6...
用C语言编写冒泡法比较10个数的大小的程序。
分析:先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换应该这样(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想这是为什么?必须要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。2.输入...
c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序_百度...
include <stdio.h> void maopao(int *a){ int temp=0;for(int i=0;i<10-1;++i)\/\/只需要冒泡9个数最后一个就已经有序了 for(int j=0;j<10-i-1;++j)\/\/j的取值需<10-i-1;为何-1,if(a[j]<a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } void xuanze(...
c语言冒泡法排序,其中第九行if(a[j]>a[j+1])开始,为什么不是if(a[i...
这是冒泡排序算法决定的。冒泡排序算法共需要n趟比较(n为元素个数),每趟两两比较相邻元素。外循环变量i决定趟数(这里i=0...9),内循环变量j控制每趟比较的元素(这里j=0...9-i),因此是if(a[j]>a[j+1])开始。
c语言选择排序法和冒泡排序法有什么区别
先上选择法和冒泡法:1.选择法 include<stdio.h> void main(){ int i,j,min,temp;int a[10];printf("请输入十个整数:");for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=0;i<9;i++){ min=i;for(j=i+1;j<=9;j++){ if(a[min]>a[j]){ min=j;} temp=a[j];a[...
c语言实现冒泡排序法
1. 在终端中打开Vim,创建一个名为bubble.c的新文件。输入`#include `,以便使用`printf`函数。2. 定义一个名为`sort`的函数,它接受一个整数指针`a`和整数`n`作为参数。这个函数的目的是对数组`a`进行冒泡排序,数组的长度为`n`。3. 使用两层嵌套循环来实现冒泡排序算法。外层循环控制整个排序...
C语言用冒泡法对一维数组中10个数按降序进行排列
{ num=n[i]; n[i]=n[j]; n[j]=num; } } } printf("1,2,3,4,5,6,7,8,9,10冒泡降序排列后为:"); for(i=0;i<10;i++) printf(
C语言冒泡法排序:任意输入十个数排序(从小到大;从大到小)
从大到小:include<stdio.h> define N 10 void main(){ int i,j;float a[N],t;printf("排序前:\\n");for(i=0;i<N;i++){ scanf("%d",&a[i]);} for(i=0;i<N;i++){ printf("%6.1f",a[i]);} printf("\\n");for(i=0;i<N-1;i++){ for(j=0;j<N-i-1;j++...
柯杜雷公: C语言冒泡排序法的排2113序规则:5261将被排序的记录4102数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡1653.根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"...
铜仁地区15524054091: 一个简单的冒泡法c语言编程 - ?
柯杜雷公: #include <stdio.h> void main() {int a[10]={3,23,43,56,21,19,214,1,3,13};int i,j,k;for(i=10;i>=1;i--)for(j=i-1;j>=1;j--) if(a[j]>a[j-1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}for(i=0;i<10;i++)printf("%3d",a[i]); };
铜仁地区15524054091: c语言中冒泡法是什么意思? - ?
柯杜雷公: 冒泡法是一种排序方法 冒泡法5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列, 从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5和4换位,得到45321 5又比3大 5和3换位 得到43521 依次类...
铜仁地区15524054091: 在C语言编程中什么叫“冒泡法”?具体解释一下,真心谢谢 - ?
柯杜雷公: 排序用的,比如有三个数613从小到大排序,用冒泡法就是先把6和1比较把6(即大的那个数放到1的后面)现在就变成163然后再把6和3进行比较,再把大的数放到后面这样就变成136,在进行第二次比较,把1和3进行比较大的数再放在后面,这样136就排出来了!这样四个数 五个数 六个数 n个数的排序都可以按照这样的方法!用C语言实现需要两个循环,一个内循环和一个外循环,内循环就是指你不断把把两个数比较大小并把大的数放在后面的过程,执行完后你会发现最大的数是在最后了!但前面的数顺序认识乱的,你就需要第二次排序,经过第二次排序后你会发现第二大的数已经排在倒数第二的位置了,以此类推,想这样的循环就是外循环
铜仁地区15524054091: 求教 C语言 冒泡法 从大到小. - ?
柯杜雷公: #include <stdio.h>int main(){int a,b,c,d,x[10];scanf("%d",&c);printf("please input the original number:\n");for(a=0;a<c;a++)scanf("%d",&x[a]);for(a=0;a<c;a++)for(b=a;b<c-1;b++)if(x[b]>x[b+1]) { d=x[b];x[b]=x[b+1];x[b+1]=d;}...
铜仁地区15524054091: c语言冒泡排序法 - ?
柯杜雷公: (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换.(2)实例...
铜仁地区15524054091: 求C语言冒泡法代码,谢谢! - ?
柯杜雷公: main() { int i,j,temp; int a[10]; for(i=0;i<10;i++) scanf ("%d,",&a[i]); for(j=0;j<=9;j++) { for (i=0;i<10-j;i++) if (a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;} } for(i=1;i<11;i++) printf("%5d,",a[i] ); printf("\n"); }
铜仁地区15524054091: c语言用冒泡法选择法从键盘任意输入十个小写字母,按从大到小的顺序排序输出. - ?
柯杜雷公: 1 输入; 2 排序; 3 输出. 参考代码如下: #include <stdio.h> int main() {int a[10];//用来存数据int i,j,temp; for(i = 0; i < 10; i ++)//输入10个数.scanf("%d",&a[i]);for (j = 0; j < 9; j++)//标准冒泡法排序for (i = 0; i < 9- j; i++){if(a[i] > a[i + ...
铜仁地区15524054091: C语言实现冒泡法排序和折半查找 - ?
柯杜雷公: #include<stdio.h>#include<string.h> void main() { char name[10][9]={"华","英","萍","涛","丽","强","军","斌","伟","亚"}; int score[10]={75,87,68,92,88,61,77,96,80,72}; printf("排序结果:\n"); for(int i=...
铜仁地区15524054091: C语言用冒泡法输入一个字符升序排列 急! - ?
柯杜雷公: #include <iostream.h>#include <string.h>#include <stdio.h>#include <stdlib.h>/* 冒泡排序法 */ void Bublesort(char a[],int n) { int i,j; char k; for(j=0;j<n;j++) /* 气泡法要排序n次*/ { for(i=0;i<n-j;i++) /* 值比较大的元素沉下去后,只把剩下的元素中的...