我正在为我的编程课做额外的学分作业。我们正在做 OOP,这个例子是获取一个数组并对其进行排序。所有的排序代码都将进入 add 方法。我已经有一些代码,并且它可以工作。正如标题中所说,我必须使用我独特的代码创建自己的算法。如何将列表中的所有整数从小到大排序?(整数是使用 add 方法添加的值。)这是讲师给我的说明:
• 沿着阵列向下走,直到找到新元素应该去的地方。由于列表已经排序,您可以继续查看元素,直到找到至少与要插入的元素一样大的元素。
• 下移将在新元素之后的每个元素,即从您停止的元素到最后的所有元素。这将创建一个插槽,您可以在其中放置新元素。请注意移动它们的顺序,否则您将覆盖您的数据!
现在您可以在您最初停止的位置插入新元素。所有这些都将进入您的 add 方法。
程序的两个类:
private int[] list;
private int numElements = 0;
//-------------------------------------------------------------
// Constructor -- creates an integer list of a given size.
//-------------------------------------------------------------
public IntList(int size)
{
list = new int[size];
}
//------------------------------------------------------------
// Adds an integer to the list. If the list is full,
// prints a message and does nothing.
//------------------------------------------------------------
public void add(int value)
{
if (numElements == list.length){
System.out.println("Can't add, list is full");
}
else
{
list[numElements] = value;
for(int i = 0; i < numElements; i++){
//May be I should use a nested loop?
//for(k = 0; k <)
if(value < list[i]){
list[i+1]= list[i];
list[i]=value;
}
}
numElements++;
}
}
//-------------------------------------------------------------
// Returns a string containing the elements of the list with their
// indices.
//-------------------------------------------------------------
public String toString()
{
String returnString = "";
for (int i=0; i<numElements; i++)
returnString += i + ": " + list[i] + "\n";
return returnString;
}
}
另一类:
public class IntListThing {
public static void main(String[] args){
IntList myList = new IntList(10);
myList.add(84);
myList.add(27);
myList.add(250);
myList.add(18);
myList.add(94);
myList.add(8);
myList.add(87);
System.out.println(myList);
}
}