首页 > 代码库 > 冒泡,二分制,模拟摇奖
冒泡,二分制,模拟摇奖
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]);
}
冒泡,二分制,模拟摇奖