题目描述:
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
输入:输入数据有一行,包含10个整数,用空格分开。
输出:输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
示例输入:
12 4 22 1 34 54 85 3 90 31
示例输出:
1 3 4 12 22 31 34 54 85 90
4 8 2 1 3 10 5 6 7 9
代码如下:
import java.util.*;
import java.util.stream.IntStream;
public class Test {
public static void main(String[] args) {
//从键盘输入10个数
Scanner in = new Scanner(System.in);
String str = in.nextLine();
in.close();
String[] strArray = str.split(" ");
Integer[] integerArry = Arrays.stream(strArray).map(Integer::parseInt).toArray(Integer[]::new);
//生成[1,10]数组
int[] laction = IntStream.rangeClosed(1, 10).toArray();
sort(integerArry, laction);
Arrays.stream(integerArry).forEach(v -> System.out.print(v + " "));
System.out.println();
Arrays.stream(laction).forEach(v -> System.out.print(v + " "));
}
//选择排序
public static void sort(Integer[] array, int[] laction) {
int length = array.length;
for (int i = 0; i < length; i++) {
int minPoint = i;
for (int j = i; j < length; j++) {
//<为升序,>为降序
if (array[j] < array[minPoint]) {
minPoint = j;
}
}
int temp = array[i];
array[i] = array[minPoint];
array[minPoint] = temp;
//交换laction中的两数
int tempLaction = laction[i];
laction[i] = laction[minPoint];
laction[minPoint] = tempLaction;
}
}
}
测试如下:
12 4 22 1 34 54 85 3 90 31
1 3 4 12 22 31 34 54 85 90
4 8 2 1 3 10 5 6 7 9
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80302.html