2017-04-13 10 views
-2

私は様々なタイムスロットの配列を持っていますが、最も古いものから最新のものまでの時間を並べ替える必要がありますが、時間の値が午前12時である配列内の要素もすべて削除します。さまざまな時間の配列を並べ替えるにはどうすればよいですか?

Appointment(0) = #10:45:00 AM# 
Appointment(1) = #12:00:00 AM# 'My actual has up 80 elements of different timeslots but I'm using 3 elements as an example 
Appointment(2) = #12:00:00 AM# 

この問題で私を助けることができる人はいますか?それはあなただけのDateTimeのリストとソートメソッドを使用し使用したものだ場合、文字列の配列を使用して

+0

これは宿題ですか? (つまり、配列を使用する必要がありますか、他のデータ構造は大丈夫ですか?) – Ryan

+0

私の大学のプログラミング割り当てです。はい、配列に基づいたコードでメインアルゴリズムを構造化しました。他のデータ構造 – Vbv123

+0

組み込みソートを使用することはできますか? – Ryan

答えて

0

は良いアイデアではありません。

+1

このパースの内容はすべて不要です。 '#10:45:00 AM#'はすでに 'Date'リテラルです。これは単なる並べ替えであり、要求どおりに午前12:00を削除しません。 – Ryan

+0

@Ryanは空白の原因を取り除くために編集しました。フォーマットは次のようになっているはずです:**#07:00:00 AM#** – Mederic

0

配列から特定の項目を除去するための.NETで何も、それは "簡略化" することができるLINQとビット:

Dim Appointment = {#10:45#, #12AM#, #12AM#} 

Appointment = (From a In Appointment Where a <> #12AM# Order By a).ToArray 

又は

Appointment = Appointment.Except({#12AM#}).ToArray 
Array.Sort(Appointment) 

ビットより効率的な代替手段は、代わりにListまたはSortedSetのような一般的なコレクションを使用することができます:

Dim list = New List(Of Date) From {#10:45#, #12AM#} ' or Dim list = Appointment.ToList 
list.Add(#12AM#) 

list.RemoveAll(Function(a) a = #12AM#) 
list.Sort() 
+0

なぜ 'List'のような特殊なジェネリックコレクションを"より良い選択肢 " LINQ? –

+0

@JimMischel私はちょっと主観的だったと思うので、効率的に変更しました。 LINQのオーバーヘッドが少なくて済み、メモリ割り当てが少なくて済み、プログラミングに新しい方が簡単かもしれません – Slai

関連する問題