几个数字判断大小输出到冒泡法排序
2017-01-29 19:56
776 查看
比如说,你要将3个数字排出顺序,你有几种方法?
这应该是一个很简单的问题,然而从有几种方法上看,不外乎这几种:
1、if-else嵌套(原理:如果一个数a大于数b,可以进行简单的判断谁大谁小)
(max、min、mid来存放这三个数)
方法简单粗暴,然而并不是最好的方法;
2、调用函数,交换两个数
判断三个数,这么少你当然可以用三个if语句,交换数值。但是多个数字呢?
其他方法待补充
上述问题,自然可以用scanf("%d %d %d",&a,&b,&c)直接把数字放在内存里面。如果很多个数,这样会造成定义多个变量,降低效率
所以自然而然,可以把数字存放在数组里
1、用指针进行地址交换
顺便求出了均值。这种方法类似于三个数中的第一种方法,用一个函数频繁实现功能
2、冒泡法排序
选择法排序还不会= =
待补充。。
这应该是一个很简单的问题,然而从有几种方法上看,不外乎这几种:
1、if-else嵌套(原理:如果一个数a大于数b,可以进行简单的判断谁大谁小)
(max、min、mid来存放这三个数)
#include <stdio.h> int main() { int a,b,c,t; int max=a,min=c,mid=b; scanf("%d %d %d",&a,&b,&c); if(b>max) max=b; if(c>max) max=c; if(a<min) min=a; if(b<min) min=b; if(a<max&&a>min) mid=a; else if(c<max&&c>min) mid=c; else mid=b; printf("%d %d %d",max,mid,min); return 0; }
方法简单粗暴,然而并不是最好的方法;
2、调用函数,交换两个数
#include <stdio.h> #define swap(m,n){t=m;m=n;n=t;} int main() { int a,b,c,t; int max=a,min=c,mid=b; scanf("%d %d %d",&a,&b,&c); if(a<b) swap(a,b); if(a<c) swap(a,c); if(b<c) swap(b,c); printf("%d %d %d",a,b,c); return 0; }
判断三个数,这么少你当然可以用三个if语句,交换数值。但是多个数字呢?
其他方法待补充
上述问题,自然可以用scanf("%d %d %d",&a,&b,&c)直接把数字放在内存里面。如果很多个数,这样会造成定义多个变量,降低效率
所以自然而然,可以把数字存放在数组里
1、用指针进行地址交换
#include<iostream> using namespace std; double faver(int s[],int,int *,int *); //#include <stdio.h> //#include <math.h> int main() { int max,min; double aver; int a[100]; int n,i; cin>>n; for(i=0;i<n;i++) cin>>a[i]; aver=faver(a,n,&max,&min); cout<<"max="<<max<<"\n"<<"min="<<min<<endl; //printf("max=%d\nmin=%d\n",max,min); cout<<"average="<<aver<<endl; //printf("average=%d",aver); return 0; } double faver(int s[],int n,int *max,int *min) { double aver=s[0]; *max=*min=s[0]; for(int i=1;i<n;i++){ aver+=s[i]; if(s[i]>*max) *max=s[i]; if(s[i]<*min) *min=s[i]; } return aver/n; }
顺便求出了均值。这种方法类似于三个数中的第一种方法,用一个函数频繁实现功能
2、冒泡法排序
#include<iostream> using namespace std; int main() { int a[100]; int i,n,temp; cout<<"请输入数组中数字个数:"; cin>>n; for(i=0;i<n;i++) cin>>a[i]; int j; for(j=0;j<n-1;j++) for(i=0;i<n-1-j;i++) if(a[i]>a[i+1]){ temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } cout<<"After sort:"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; return 0; }
选择法排序还不会= =
待补充。。
相关文章推荐
- c++实现判断在命令行中输入几个数字然后对输入的数字进行冒泡法排序
- java判断三个数字的大小(判断a,b,c按顺序从大到小,从小到大输出)
- EXCEL判断数字大小.奇偶的比例
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 判断数字大小
- 不用判断语句比较两个数字大小
- [C#]数字颠倒输出;判断某天是一年中的第几天
- 任给三个数字a,b,c,比较大小按照从大到小顺序输出
- 用JS判断两个数字的大小
- STL_Sequence_大小写英文字母和数字进栈输出显示
- Java判断两个数字大小代码实例
- 判断一个字符是否是数字、还是大小写字母
- 如何判断输入的几个数字互不相同
- hdu 1716 排列2 输出几个数字的全排列
- PHP的几个常用数字判断函数代码
- 作业四-1、输入2个正整数m和n(1≤m,n≤1000),输出m~n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。要求定义并调用函数is(number)判断number的各位数字之和是否等于其自身。
- 用JS判断两个数字的大小
- 用JS判断两个数字的大小
- JS中数字大小判断注意点
- [C#]数字颠倒输出;判断某天是一年中的第几天