package Homework;
/*
 * 設計一程式
 * 可統計1~49各出現次數,並由大到小排列
 */
public class TestLotteryRicherHw2 {
  
int data[]=new int[49]; //儲存1~49各出現幾次
int num[]=new int[49];
//data[0] 用來儲存1出現幾次 data[1]用來儲存2出現幾次
public void count(){
  
for(int i=1;i<=100000;i++){ //骰100000次
int rnum=(int)(Math.random()*49+1); //設一變數rnum接收亂數1~49
data[rnum-1]++; //假如亂數是2,由於必須存在data[1],所以必須-1
} 
}
 
public void sortarray(){
for(int i=0;i<num.length;i++){
num[i]=i+1;  //設num[0]=1 ;num[1]=2 這樣才對得起來
//如果這裡不加1,則在印出時,必需num[i]後加1
}
  
/*
* 使用雙向泡沫排序法排序,跟下一個比
* 0比1 1比2 2比3...
* 不確定會比幾次需要設永久迴圈
*/
while(true){
 int count=0;
for(int i=0;i<data.length-1;i++){
 int temp1=0,temp2=0;
 if(data[i]<data[i+1]){
 temp1=data[i];  //出現次數由大排到小
 data[i]=data[i+1];
 data[i+1]=temp1;
    
 temp2=num[i];
 num[i]=num[i+1];
 num[i+1]=temp2;
 count++;
 }
}
 if(count==0){
 break;
 }
}
for(int i=0;i<49;i++){
//排序後
System.out.println("出現次數由小排到大數字"+num[i]+" 出現了"+data[i]+"次"); 
}
  
}
 
public void printarray(){
for(int i=0;i<data.length;i++){
//排序前
System.out.println("數字"+(i+1)+"出現了"+data[i]+"次");
}
}
public static void main(String[] args) {
TestLotteryRicherHw2  test1=new TestLotteryRicherHw2 ();
test1.count();
test1.printarray(); //排序前
System.out.println("-------------------------------------------");
test1.sortarray(); //排序後 
}
}
沒有留言:
張貼留言