数组的随机排序(java版)

序言

学完c语言之后,我直接速学java,在初阶时候碰到一个案例:如何将数组随机排序。

原理

我们可以设定一个随机数,在数组范围内,这是我们数组的索引值,然后在我们遍历数组的时候,每个数组的位置都和索引值对应数组的位置对换,就可以实现随机排序了,是不是听着很简单,但是需要注意java产生随机数和c不一样,java可以直接用random的包直接实现(但我们要创建一个对象),还有读取用户输入的值也不一样,这里我是用scanner。

步骤

首先直接开讲原理,我们的功能是先创建一个动态数组,让用户自行填入数值,接着将用户输入的数值打印出来,这是第一步,直接上代码去理解:

package com.jx.test1;

import java.util.Scanner;

//实现数组的随机排序
public class test1 {
    public static void main(String[] args) {
        //创建动态数组
        int arr[]=new int[5];
        //用户输入数组值,遍历
        Scanner sc = new Scanner(System.in);//用于读取用户输入值
        for (int i=0;i<arr.length;i++) {
            System.out.println("please tell me the "+i+1+" num:");
            int code = sc.nextInt();
            arr[i]=code;
        }
        //输出用户输入的数组
        System.out.println("well,your code is:\n");
        for (int i=0;i< arr.length;i++) {
            System.out.println(arr[i]);
        }

    }
}

随后就是设立索引值,这里用random,注意一下数组我们设立的是5个元素,序号是0-4,因此只需要随机0-4的数即可,最后优化一下的代码是这样的:

package com.jx.test1;

import java.util.Random;
import java.util.Scanner;

//实现数组的随机排序
public class test1 {
    public static void main(String[] args) {
        //创建动态数组
        int arr[] = new int[5];
        //用户输入数组值,遍历
        Scanner sc = new Scanner(System.in);//用于读取用户输入值
        for (int i = 0; i < arr.length; i++) {
            System.out.println("please tell me the " + (i + 1) + " num:");
            int code = sc.nextInt();
            arr[i] = code;
        }
        //输出用户输入的数组
        System.out.println("well,your code is:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(" ");
            System.out.print(arr[i]);
        }
        //随机生成索引值
        Random ra = new Random();
        for (int i=0;i< arr.length;i++) {
            int index = ra.nextInt(arr.length);//0-4随机数
            int tem = 0;
            tem = arr[i];
            arr[i] = arr[index];
            arr[index] = tem;
        }
        System.out.println("your code is random sorted:");
        for (int i =0;i< arr.length;i++)
        {
            System.out.print(" ");
            System.out.print(arr[i]);
        }
    }
}

运行结果

请原谅我的蹩脚英文哈哈哈

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值