プログラミングクラスの追加単位の割り当てを行っています。OOP を実行しています。この例では、配列を取得して並べ替えます。すべてのソート コードは add メソッドに入ります。私はすでにいくつかのコードを持っていますが、それはある程度機能します。タイトルで述べたように、独自のコードを使用して独自のアルゴリズムを作成する必要があります。リスト内のすべての整数を最小から最大の順に並べ替えるにはどうすればよいですか? (整数は add メソッドで加算された値です。) インストラクターからの指示は次のとおりです。
• 新しい要素を配置する場所が見つかるまで、配列をたどっていきます。リストはすでにソートされているので、挿入する要素と少なくとも同じ大きさの要素が見つかるまで、要素を見続けることができます。
• 新しい要素の後に続くすべての要素、つまり停止した要素から最後までのすべての要素を下に移動します。これにより、新しい要素を配置できるスロットが作成されます。それらを移動する順序に注意してください。そうしないと、データが上書きされます。
これで、最初に停止した場所に新しい要素を挿入できます。これらすべてが add メソッドに入ります。
プログラムの 2 つのクラス:
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);
}
}