黑马程序员—Java基础学习笔记之数组排序(机选双色球)

----------- android培训java培训java学习型技术博客、期待与您交流! -----------

 数组

概念:同一种类型的数据的集合。其实数组就是一个容器。

数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1:元素类型[] 数组名=new 元素类型[元素个数或数组长度];

         例:int[] arr = new int[5]; int arr[] = new int[5],也可以这样写将[]放到数组名后面,不过不常用。

格式2:元素类型[] 数组名=new 元素类型[]{元素,元素,......};

       例:int[] arr = new int[]{3,5,1,7}等同于int[] arr={3,5,1,7}

注意:格式中的数组名的数据类型是单独的数组类型(属于引用类型),和数组元素类型不一样哦,并非int类型等。

数组排序有:选择排序、冒泡排序、二分查找冒泡排序比选择排序效率高

最快的是希尔排序三层循环加位运算哦了解内容系统自带函数Arrays.sort函数排序,开发中要是用它

下面总结下利用数组机选双色球

/**
 * 随机抽取算法
 * 需求:机选双色球,前6红色后1蓝色
 *	01~33号
 *	6个号   作为红球
 *	01~16
 *	1个号   作为蓝球

 */
import java.util.*;
class ShuangSeQiu 
{
	public static void main(String[] args) {


		System.out.println(Arrays.toString(randomBall()));//Arrays在java.util.*,里面
	}
	public static String[] randomBall(){
		String[] pool={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33"};
		String[] balls=new String[7];//字符串型,因球是01,02,03......33
		boolean[] flags=new boolean[33];//数组默认元素值为“0”,布尔型为false
		int i=0;
		Random r=new Random();//用到类库中函数Random
		while(true){
			int index=r.nextInt(33);//随机的33个,指的是[0,33),即索引或下标从0到32,不包括33,刚好33个
			if(flags[index]==true){
				continue;//表示这号被选过了,跳过
			}
			balls[i++] = pool[index];//把没选过的存放到balls数组中,i
			flags[index] = true;
			if(i==6){
				break;	//当找到6个时候停止		
			}
		}
		Arrays.sort(balls,0,5);//Arrays.sort(canshu)系统对数组的排序算法,0,5,表示排序0-5,
		//int index=r.nextInt(16);//同上,[0,16)
		//String blueBall=pool[index];//蓝球就1个字符,所以只需随机一个放进blueBall中
		//balls[6]=blueBall;
		balls[6] = pool[r.nextInt(16)];//这是对上面三条的简化,把蓝球buleBall放入到balls中第7个,即下标6那
		return balls;
		
	}
	
	
}
//下面是对于flag[index]==false帮助理解
//(flag[index]==false)==true;(falg[index]==true)==false
//if(true)== if(!flag[index])==if((flag[index]==false))
//if(false)==if(flag[index]) == if(falg[index]==true)

输出结果:

每次运行输出结果都是随机的

[03, 11, 19, 21, 33, 14, 16]

[03, 12, 14, 21, 33, 14, 02]

......

上面算法中需要注意几点:

 1、双色球号码是字符串,不是数字,所以要用String类型。

 2、Arrays.sort(balls,0,5);//Arrays.sort(arg)系统数组字符串排序算法,0,5,表示排序0-5,因为双球是前面6个红球,后面一个蓝球,所以只排序前6个数组元素。

 3、打印是将数组转换成字符串,System.out.println(Arrays.toString(randomBall()));用到了Arrays.tostring()方法                        

----------- android培训java培训java学习型技术博客、期待与您交流! -----------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值