需要帮助创建Java线性算法n(k-1)

时间:2014-10-12 16:11:27

标签: java arrays object

我在数组集合中找到了常见元素。到目前为止,这是我的代码。

public class CommonElements {       

Object[] comparable;
Object[] comparisonArray;
Object[] commonArray;
int comparisonCount  = 0;


// constructor 
public CommonElements( String comparableString, int i ){ 

    comparable[i] = comparableString;  
}



public void addCommonElements( String comparableString, int i ){

    comparable[i] = comparableString;  
}



public Object[] getCommonElements(){

    return comparable;
}




public void SetcomparisonCount(int i){

    comparisonCount = i;
}



public int getcomparisonCount(){

    return comparisonCount;
}



public Comparable[] findCommonElements(Object[] collections){

    comparable = ((Comparable[])collections[0]);


    for(int i = 0; i <comparable.length; i++ ){


        for(int j = 0; j < collections.length; j++){


        }

    }




    return null;
}   



}





public class Module6 {


public static void main(String[] agrs){

Object [] collections = new Object[3];
collections[0] = new String[]{"Pittsburgh", "New York", "Chicago", "Cleveland", "Miami", "Dallas", "Atlanta", "Detroit"};
collections[1] = new String[]{"Philadelphia", "Seattle", "Tampa Bay", "Cincinnati", "New Orleans", "Houston", "Jacksonville","Minnesota"};
collections[2] = new String[] {"Indianapolis", "Oakland", "Baltimore", "Buffalo", "San Francisco", "Washington", "Green Bay", "St. Louis"};


}



}


public Comparable[] findCommonElements(Object[] collection)

我正在使用此方法来帮助对数组进行排序。该方法接受一组数组(具有不同长度和任何类型)作为输入,算法输入应不大于n(k-1)。我知道我可以使用二次算法来解决它,但它不符合赋值的要求。有人可以就如何实现这个目标给我任何想法吗?

请注意我的老师提供的内容。

关于测试的注意事项 您需要开发几组测试集合来测试您的算法。评分标题提及涵盖所有测试集合具有相同长度的情况,以及涵盖测试集合具有不同长度的情况。您还需要考虑这种算法最坏情况的构成,因为只有这种情况才能使您对总体比较的分析有意义。您可以使用分级量规中的公式来告诉您在二次和线性情况下应该进行多少次比较。例如,如果您有5个总集合(1个查询集合和4个测试集合),每个集合包含10个元素,则在最坏情况下执行的比较总数应为:(k - 1)N2,对于k = 10和N = 10是:(5-1)102或400比较。对于线性算法,您应该只有N *(k - 1),即10 *(5 - 1),或40个比较。

2 个答案:

答案 0 :(得分:0)

嗯,听起来你需要前k个元素。如果我是对的:
阅读快速排序分区元素的想法,它允许您在线性时间内选择第k个最大元素, 所以要先选择k元素,你将花费n *(k-1) 我不能提供更多细节,因为这是你的功课,所以有趣的部分留给你。

答案 1 :(得分:0)

构造函数抛出NullPointerException

public CommonElements( String comparableString, int i ){ 

 //NullPointerException   
comparable[i] = comparableString; 


}

您必须先创建对象

Object[] comparable = new Object[10];;