ACM——p2016数据的交换输出(选择排序,选择最小数与第一个交换)
来源:互联网 发布:空气炮升级数据 编辑:程序博客网 时间:2024/05/22 17:24
4 2 1 3 45 5 4 3 2 10
1 2 3 41 4 3 2 5
分析:题目的要求:找到最小的数和第一个数进行交换,然后依次输出,所以第一想到的方法是:选择排序法。
需要用到的有数组,min,位置数:k
用数组a[]来接收输入的数据
用min记住第一个输出的数a[0],依次和接下来的数进行比较,找到最小的数,如果有,用k记住他的位置,如果没有,k=0也就是a[0]
int min=a[0];
所以用到for(int i=0;i<n;i++){
if(min<a[i]){
min=a[i];
k=i;
}
}
然后判断 k==0?
如果不等于
就将a[0]和a[k]进行交换,a[k]就是最小的数。
代码如下:
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
if(n==0){
break;
}
int a[] = new int[n];
a[0] = sc.nextInt();
int min = a[0];
int k = 0;
for (int i = 1; i < n; i++) {
a[i] = sc.nextInt();
if (min > a[i]) {
min = a[i];
k = i;
}
}
if (k != 0) {
int s = a[0];
a[0] = a[k];
a[k] = s;
}
for(int i=0;i<n-1;i++){
System.out.print(a[i]+" ");
}
System.out.println(a[n-1]);
}
}
}
- ACM——p2016数据的交换输出(选择排序,选择最小数与第一个交换)
- OJ题——10个数中,最小数与第一个交换,最大数与最后一个交换
- C语言//选择排序 //查找数组范围内最小的值跟第一个值交换 k记录最小值下标
- (指针)输入10个整数, 把最小的与第一个数交换, 最大的与最后一个数交换
- 排序算法之四 —— 直接选择排序及交换二个数据的正确实现
- 【读书笔记】输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 用户输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。。
- java 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 选择排序,交换下标的
- 算法学习——不交换的选择排序
- 直接选择排序及交换二个数据的正确实现
- 直接选择排序及交换二个数据的正确实现
- 直接选择排序及交换二个数据的正确实现
- 直接选择排序及交换二个数据的正确实现
- 经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 排序算法之直接选择排序(内附交换两个数据交换的正确实现方法)
- 对于整数的处理(最小的与第一个交换,最大的与最后一个交换)
- 键盘的弹出和隐藏
- jdk和eclipse的下载安装
- Differences between OpenCV JavaCV and OpenCV4Android
- OpenNI2 Arm-Linux下的安装配置
- Ubuntu 16.04 用 MacBuntu 16.04 TP 打造 MAC 界面
- ACM——p2016数据的交换输出(选择排序,选择最小数与第一个交换)
- 数据结构——表与链表
- 多态,接口
- 构造继承
- C/C++/Java goto语句的使用
- vc6 远程调试
- gui
- 关系型数据库
- 接口,事件