冒泡,二分制,模拟摇奖

1. 实现冒泡排序算法。

//冒泡排序

 int [] a={1,7,9,3,6,0,2};
 int z;
 for(int i=0;i<a.length;i++)
 {
 for(int j=i;j<a.length;j++)
 {
 if(a[i]>a[j])
 {
 z=a[i];
 a[i]=a[j];
 a[j]=z;
 }
 }
 System.out.print(a[i]);
 }
         

2.实现二分查找法。

public int binarySearch(int[] data,int aim){//以int数组为例,aim为需要查找的数
int start = 0;
int end = data.length-1;
int mid = (start+end)/2;//a
while(data[mid]!=aim&&end>start){//如果data[mid]等于aim则死循环,所以排除
if(data[mid]>aim){
end = mid-1;
}else if(data[mid]<aim){
start = mid+1;
}
mid = (start+end)/2;//b,注意a,b
}
return (data[mid]!=aim)?-1:mid;//返回结果
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//针对已经排序好的数组进行查找(对上面代码进行的改进)
publicstaticbooleanbinarySearch(int[]array,inttarget){
intleft=0;
intright=array.length-1;
intmid=(left+right)/2;
while(array[mid]!=target&&right>left){
if(array[mid]>target){
right=mid-1;
}
elseif(array[mid]<target){
left=mid+1;
}
mid=(left+right)/2;
//判断在缩小范围后,新的left或者right是否会将target排除
if(array[right]<target){
break;//若缩小后right比target小,即target不在数组中
}
elseif(array[left]>target){
break;//若缩小后left比target大,即target不在数组中
}
}
return(array[mid]==target);
}

3.采用多种算法,模拟摇奖:从1-36中随机抽出8个不重复的数字

 

Random ran=new Random();
 int [] a=new int [8];
 for(int i=0;i<8;i++)
 {
 a[i]=ran.nextInt(35);
 for(int j=0;j<i;j++)
 {if(a[i]==a[j])
 {
 i--;
 break;
 }
 
 }
 System.out.println(a[0]);
 System.out.println(a[1]);
System.out.println(a[2]);

 System.out.println(a[3]);
 System.out.println(a[4]);
 System.out.println(a[5]);
 System.out.println(a[6]);
 System.out.println(a[7]);
 }

posted @ 2016-09-14 19:54  hanruyue  阅读(229)  评论(0编辑  收藏  举报