java 每日一题—01

导读:本篇文章讲解 java 每日一题—01,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

题目描述:
输入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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!