数组元数排序
来源:互联网 发布:授权书制作软件 编辑:程序博客网 时间:2024/06/05 02:36
/** * 文件名称:2012-5.cpp * 作 者: 胡颖 * 完成日期:2017 年 3月 13 日 * 输入描述:输入n和n个数组元数 * 问题描述:原序输出,排序后输出 * 程序输出:输出原序和排序后的数组 * 问题分析:利用sort函数实现 * 算法设计:略 */ #include <stdio.h>int main(){ int i,n,array[100]; printf("请输入正整数n:\n"); scanf("%d",&n); printf("请输入n个数组元数:\n"); for(i=0;i<n;i++) scanf("%d",&array[i]); printf("按元数输入顺序输出后为:\n"); for(i=0;i<n;i++) printf("%3d",array[i]); printf("\n"); void sort(int array[],int n); sort(array,n); printf("按元数从小到大排序后的结果是:\n"); for(i=0;i<n;i++) printf("%3d",array[i]); return 0;}void sort(int array[],int n){ int i,j,k,temp; for(i=0;i<n-1;i++)//用选择排序,从小到大排 { k=i; for(j=i+1;j<n;j++) /*如果后面的大于前面的,用k记录然后交换,否则由于k=i,相当于原地不动,交换语句不加{}也不影响*/ if(array[j]<array[k]) k=j; temp=array[k]; array[k]=array[i]; array[i]=temp; }}//用冒泡排序void sort(int array[],int n){ int i,j,temp; /* i从0到n-1排n次 内循环排n-i次 */ for(i=0;i<n-1;i++) { for(j=0;j<n-i;j++) { if(array[j]>array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } }}
运行结果:
遇到的问题:用冒泡排序时循环的终点没有弄清,不知道之前写的冒泡排序为什么for循环是这样的
for(i=0;i<n-2;i++)
for(j=0;j<n-i-1;j++)
这样导致我的测试 9 8 7 6 5 4 3 2 1时的输出结果是 2 1 3 4 5 6 7 8 9,应该是少排了一次,最后改成i<n-1和j<n-i就出现正确的结果了,而且以前的那组数据用了这种错误的方法排出的结果是对的,可能是数据的偶然性吧,然而当时却没发现,因此以后进行测试时应该多弄一些特殊的数据。
0 0
- 数组元数排序
- 数组奇偶数排序
- 输出逆序后的数组元数
- 数组--排序--组成最大数
- swift 普通数组和元组数组排序
- js删除数组里重复的元数
- js删除数组里重复的元数
- 求二维字符串数组里的元数个数
- 删除已排序数组中的重复数
- 归并排序&&树状数组求逆序数
- 对数组的数进行排序
- 归并排序 树状数组 求逆序数
- 随机数、序列数生成、数组排序
- 数组排序算法之,组成最大数
- 数组去重复数以及排序问题
- (数组)四个数从大到小排序(数组)
- 指针法排序/查找数/成绩排序(二维数组)
- Java二分法在已排序数组中查找指定数
- MySQL是怎么在源码层表达对象的-----Item对象及子对象解析(三)
- 妄谈数据库框架(非整个框架全部),见笑,请多指正:
- MySQL是怎么在源码层表达对象的-----Item对象及子对象解析(四)
- select count(*) 和 select count(1)有什么区别?
- MySQL多表连接过程中自动创建索引一例:
- 数组元数排序
- 单表扫描,使用ref和range从索引获取数据一例
- MySQL执行计划显示与执行过程不符合一例
- MySQL不支持子查询优化一例
- 再谈MySQL的子查询优化技术
- MySQL的分页技术总结
- 《数据库查询优化器的艺术》---勘误
- Ubuntu16.01下构建Qt5开发环境(2)
- MySQL子查询辨析