| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 682 人关注过本帖
标题:帮忙看看这个代码应该怎么改才能实现
只看楼主 加入收藏
infinite2015
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
帮忙看看这个代码应该怎么改才能实现
我是用Eclipse编的

把三个class都放在一个package下。

我想在mathAlgorithm中定义一个长度为20的数组,并随机产生20个0~100的随机整数。
然后调用另一个class文件的冒泡排序的方法来实现排序,并返回mathAlgorithm.class中。
然后在mathAlgorithm.class中,再调用折中查找的class文件中的方法,实现查找?
package ninthpackage;

public class mathAlgorithm {

    public static void main(String[] args) {
        //产生长度为20的数组,并随机产生里面的数值。
        
        int a[]= new int[20];
        
   
        for(int k=0;k<a.length;k++)
        {
            a[k]=(int)(100*Math.random());
            }
        
        int n=68;
        //如何采用下面冒泡排序的方法进行排序
        
        
        //如何采用下面定义的折半查找法在上面的方法中返回的排序过后的数组中查找其中n=68这个数的位置。
        

        
    }

}


//冒泡排序

package ninthpackage;
/*随机产生20个0~100的随机整数,用冒泡排序的方法按其从小到达的顺序排列排列
 *并且对排序前后的数组按照每行10个数方式进行输出
 *
 *
 *
 */
public class MaoPaoPaiXu {
   
   
    public MaoPaoPaiXu(int a[]){
        //随机产生20个0~100之间的随机整数
        /*int a[]= new int[20];
        
        
        for(int k=0;k<a.length;k++)
        {
            a[k]=(int)(100*Math.random());
            }
        */
        
        int count=a.length;
        for(int i=0;i<count;i++){
            for(int j=count-1;j>i;j--){
                if (a[j]<a[j-1]){
                    int temp=a[j];
                    a[j]=a[j-1];
                    a[j-1]=temp;
                }
            }
        }
        System.out.println("20个随机数按照冒泡排序由小到大排列");
        for(int i=0;i<count;i++){
            System.out.println(a[i]);
            }
        
        //如何返回已经排过序的数组a
        
        }
     
     
     
}



//折半查找法

package ninthpackage;



/*在MaoPaoPaiXu的方法的基础上,采用这般查找法查找给定的数在排序后的数组中的位置
 * 如果查到该数,输出信息:X在数组的第Y个位置上的程序。
 * 其中,X代表给定的数,Y代表该数在数组中的位置。
 *
 *
 */
public class ZheBanChaZhaoFa {
    public static int bisearch(int a[],int n){
        int low =0;
        int high=a.length-1;
        int mid =(low+high)/2;
        if(n>a[high]||n<a[low])
            return -1;
        while(low<=high){
            if(a[low]== n)
                return low;
               
            else if(a[high]==n)
                return high;
            
            else if(a[mid]==n)
                return mid;
            
            else{
                if(n>a[mid]){
                    low=mid+1;
                    mid=(low+high)/2;
                }
                else{
                    high=mid-1;
                    low=low+1;
                    }
                }
            }
            return -1;
        }
   
}
搜索更多相关主题的帖子: package public 
2015-04-29 16:52
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
package ninthpackage;

public class mathAlgorithm {

    public static void main(String[] args) {
        //产生长度为20的数组,并随机产生里面的数值。
        MaoPaoPaiXu bubble;
        int a[]= new int[20];
        
   
        for(int k=0;k<a.length;k++)
        {
            a[k]=(int)(100*Math.random());
        }
        bubble=new MaoPaoPaiXu(a);
        //如何采用下面冒泡排序的方法进行排序
        int b[]=bubble.sorted();
        for(int i:b)
            System.out.print(" "+i);
        System.out.println();
        //如何采用下面定义的折半查找法在上面的方法中返回的排序过后的数组中查找其中n=68这个数的位置。
        int n=68;
        int found=new ZheBanChaZhaoFa().bisearch(b, n);
        if(found!=-1)
            System.out.println("place:"+found);
        else
            System.out.println("not found!");
    }

}


//冒泡排序
 
/*随机产生20个0~100的随机整数,用冒泡排序的方法按其从小到达的顺序排列排列
*并且对排序前后的数组按照每行10个数方式进行输出
*
*
*
*/
 class MaoPaoPaiXu {
   
    int b[];
    public MaoPaoPaiXu(int a[]){
         
        int count=a.length;
        for(int i=0;i<count;i++){
            for(int j=count-1;j>i;j--){
                if (a[j]<a[j-1]){
                    int temp=a[j];
                    a[j]=a[j-1];
                    a[j-1]=temp;
                }
            }
        }
        System.out.println("20个随机数按照冒泡排序由小到大排列");
        for(int i=0;i<count;i++){
            System.out.println(a[i]);
            }
        
        //如何返回已经排过序的数组a
        b=a;
        }
     
     public int[] sorted(){
         return b;
     }
     
}



//折半查找法
 

/*在MaoPaoPaiXu的方法的基础上,采用这般查找法查找给定的数在排序后的数组中的位置
* 如果查到该数,输出信息:X在数组的第Y个位置上的程序。
* 其中,X代表给定的数,Y代表该数在数组中的位置。
*
*
*/
  class ZheBanChaZhaoFa {
    public static int bisearch(int a[],int n){
        int low =0;
        int high=a.length-1;
        int mid =(low+high)/2;
        if(n>a[high]||n<a[low])
            return -1;
        while(low<=high){
            if(a[low]== n)
                return low;
               
            else if(a[high]==n)
                return high;
            
            else if(a[mid]==n)
                return mid;
            
            else{
                if(n>a[mid]){
                    low=mid+1;
                    mid=(low+high)/2;
                }
                else{
                    high=mid-1;
                    low=low+1;
                    }
                }
            }
            return -1;
        }
   
}

剑栈风樯各苦辛,别时冰雪到时春
2015-04-29 17:11
infinite2015
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-24
收藏
得分:0 
回复 2楼 林月儿
谢谢~
2015-04-29 18:19
infinite2015
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-4-24
收藏
得分:0 
之前为什么做不出来的原因,知道要调用一个方法,就要新建该方法的实例。然后却不知道要根据方法的返回值类型定义变量。如上面的int found=new ZheBanChaZhaoFa().bisearch(b, n);
2015-04-29 18:25
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 4楼 infinite2015
恩,不错,加油

剑栈风樯各苦辛,别时冰雪到时春
2015-04-29 18:41
快速回复:帮忙看看这个代码应该怎么改才能实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020219 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved