冒泡和选择排序
来源:互联网 发布:ssohandler java 编辑:程序博客网 时间:2024/05/17 23:56
/*冒泡排序:两两依次比较,若违法规定则交换。
从小到大排序(若给定N个数)
1.第一次扫描要比较(N-1)次,取出最大的值,放入最后一个元素a[N-1]中。
2.第二次扫描要比较(N-2)次,取出此次最大的,放入到第二个元素a[N-2]中。
3.以此类推。。。。。
*/#include <stdio.h>#define N 10int main(){ int a[N]; int temp ,i,j,k; k=N; printf ("Please input %d numbers:\n",k); //输入N个数,放到数组a[N]中(a[N]:共有N个元素,但是下标0开始) for (i=0;i<N;i++ ) scanf ("%d",&a[i]); //要扫描(N-1)次 for (i=0;i<(N-1);i++) { /*i=0是第一次扫描,数组里面的元素两两依次比较, 要比较(N-1)次,可以比较出一个最大的。 i=1是第二次扫描,数组里面的元素再次比较, 因为第一次已经比较出一个,所以第二次将少比较一次*/ for(j=0;j<(N-1-i);j++) //数据交换 if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } //打印结果 printf ("The output is:\n "); for (i=0;i<N;i++) printf ("%d\n",a[i]); return 0;}
选择排序
/*N个数从小到大排序
1.第一次选择:取第一个数,假设它是最小,向后依次比较,
若出现比它小的,则进行地址互换,然后再向后继续比较,直到数据末尾。
2.第一次选择后,选出了最小数据所在的位置(地址),再把数据互换,换到第一位。
3.第二次选择:取第二个数,同1
4.同2
5.依次选择
*/#include <stdio.h>#define N 5int main(){ //数据定义 int a[N]; int i,j,k,min,temp; k = N; //输入 printf ("Please input %d numbers:\n",k); for (i=0;i<N;i++) scanf ("%d",&a[i]); //取第i个数,假设是最小 for (i=0;i<N;i++) { min=i; //第i个数,向后依次比较 //若出现比第i个数小的数,则进行地址互换 for (j=i+1;j<N;j++) { if (a[min] > a[j]) min=j; } //找到最小的数所在的位置,把最小的数换到对应位置 if(min != i ) { temp=a[i]; a[i]=a[min]; a[min]=temp; } } //打印 printf ("the output is:\n"); for (i=0;i<N;i++) printf ("%d\n",a[i]);return 0;}
阅读全文
0 0
- 冒泡和选择排序
- 冒泡和选择排序
- 冒泡和选择排序
- 冒泡和选择排序
- 选择和冒泡排序
- 冒泡和选择排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- javascript的本地对象,内置对象和宿主对象
- Ubuntu16.04 为AndroidStudio添加快捷方式
- 6/22作业:Java中的流程(顺序流程,分支流程,循环流程)
- 单引号,双引号,javascript,HTML,转义字符
- BPM与ERP,OA
- 冒泡和选择排序
- Linux/Unix环境下的make和makefile详解
- widget的加载过程
- JavaScript基础(六) --- 函数、闭包
- Ubuntu1404下atom配置C++环境
- 图论500题——HDU_P1272(小希的迷宫)
- Jquery -- 错误集
- 阿里云申请配置免费DVSSL证书
- Android字符串进阶之三:字体属性及测量(FontMetrics)