0

そのため、アルゴリズムを使用して文字列の配列をソートしようとしています。

注: この割り当てでは、組み込みの並べ替え関数を使用することは許可されていません。

public boolean insert(String s)
{
  boolean result = false;
  int index = 0;
  int k = 0;
  String temp = "";

  if (numUsed < values.length)
  {
    if (index == 0) 
    {
      values[index] = s;
    }    
    else 
    {
      index = 0;
      while (values[index].compareTo(s) < 0);
      k = index;
      while (k < numUsed)
      {
        values[k + 1] = values[k];
      }
      values[index] = s;
    }
    numUsed++;
    result = true;
  }
}

「apples」、「cats」、および「bees」を入力すると、出力は入力された順序と同じになります。私が何をしても、決してソートされないようです。

誰かが問題を見つけるのを手伝ってくれますか?

4

2 に答える 2

0

基本に戻ることから始めましょう。目の前に無作為に並べられた大量のインデックス カードがあり、それらをアルファベット順に並べる必要があると想像してください。簡単ですが実行可能な方法は、最初に A で始まるすべての単語を見つけて、それらをの山に入れることです (ヒント: プログラムで別の山をどのように模倣できますか?)。次に、最初の山を調べて、B で始まるすべての単語を見つけ、それらを並べ替えた山の後ろに置きます (別のヒント)。

現在のコードを脇に置いて、新たに始めることをお勧めします。ソートされていない配列を通過するループを作成し、辞書の先頭に最も近い単語を見つけます。これを開始するための疑似コードを次に示します。

String leastSoFar = "ZZZZZZ";
for each String in values:
    compare the string to leastSoFar
    if the string is closer to the start of the dictionary than leastSoFar:
        leastSoFar = ???? //I'll let you fill those in
于 2013-10-01T05:22:20.023 に答える