java基本语言

最近在JAVA中学习了洗牌算法。

洗牌算法是常见的随机问题;它可以抽象成:得到一个M以内的所有自然数的随机顺序数组

常见问题描述:

1.将自然数1 ~ 100随机插入到一个大小为100的数组,无重复元素

2. 1 ~ 52张扑克牌重新洗牌

现在来看看我的代码吧!

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


public class Test01 {


public static void main(String[] args) {

System.out.println("输入成绩");
 
Scanner scan = new Scanner(System.in);
 
double[] score = new double[5];
 
for(int i=0; i < score.length; i++){
 
 System.out.println("第"+(i+1)+"次");
 
 score[i] = scan.nextDouble();
 
}
for(int i=0; i < score.length; i++)//输出
{
  System.out.print(score[i]+"\t");
 
}
  System.out.println();
  double sum = 0;
  for(int i=0; i < score.length; i++) {
  
 sum += score[i];
 }
  
  System.out.println("和为"+sum);
  
  System.out.print("平均数是" +(sum/score.length));
 
double max = score[0];

for (int i =0; i < score.length; i++)
{
if (score[i] > max)
max = score[i];
}
System.out.println("最大值"+max);

   int maxID = 0;
   
   for (int i =1; i < score.length; i++){
   
    if (score[i] > score[maxID])
   
maxID =i;
    }
   
   System.out.println("最大值"+score[maxID]);
   
   int a =3;
   
   int b =5;
   
   int temp = a ;
   
   a = b;
   
   b = temp;
   
   int temp1= 0;
   for(int i =0; i    {
    temp1 =i;
    for(int j = i+1; j < score.length;j++)
    {
    if(score[j] > score[temp1])
    temp1 = j;
    if(i!= temp1){
   
    double a1 = score[i];
   
    score[i] = score[temp1];
   
    score[temp1] = a1;
   
   
  }
   for(int i1 =0; i1 < score.length;i1++)
   
    System.out.print(score[i1]+"\t");
    }
       System.out.println();
       
       for(int i1 = 0; i1 < score.length-1; i1++)//洗牌算法
       {
        int p =(new Random(1).nextInt(score.length-i1)+i1);
        double a1 = score[i1];
        score[i1] = score[p];
        score[p] = a1;
       }
     
       
   
    }
    
 
}

}

你可能感兴趣的:(java基本语言)