あまり意味のないコードがいくつかあります。文字列の配列があり、foreach()ループでそれらをカウントするためにバイナリ検索を使用しています。コードは、並べ替えを除いて、出力を試みる両方の時間でまったく同じです。なぜ私が得ている結果を得ているのかわかりません。両方の時間で同じ方法で配列値をカウントする必要があると思います。何か助けはありますか?
コード:
using System;
public class Driver {
public static void Main(string [] args) {
String [] s = {"Bob", "Jane", "Will", "Bill", "Liz"};
Console.WriteLine("Before Sorting:\n----------");
foreach(string item in s) {
Console.WriteLine("{0}. {1}", Array.BinarySearch(s, item) + 1, item);
}
Console.WriteLine("Will is at position {0}", Array.BinarySearch(s, "Will") + 1);
Console.WriteLine("\n\nAfter Sorting:\n----------");
Array.Sort(s);
foreach(string item in s) {
Console.WriteLine("{0}. {1}", Array.BinarySearch(s, item) + 1, item);
}
Console.WriteLine("Will is at position {0}", Array.BinarySearch(s, "Will") + 1);
}
}
出力:
Before Sorting:
----------
1. Bob
2. Jane
3. Will
0. Bill
-2. Liz
Will is at position 3
After Sorting:
----------
1. Bill
2. Bob
3. Jane
4. Liz
5. Will
Will is at position 5
それは完全に愚かなことだと確信していますが、私には理解できません。