2017-04-13 1 views
-2

그래서 다양한 타임 슬롯 배열을 가지고 있지만, 가장 빠른 것부터 최신 것까지 시간을 정렬하고 싶습니다. 그러나 배열의 시간 값이 12:00 am 인 요소를 삭제하려고합니다.배열을 여러 번 정렬하려면 어떻게해야합니까?

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# 

이 문제와 관련하여 도움을 줄 수있는 사람이 있습니까? 그 방금 날짜 시간의 목록을 사용하고 정렬 방법을 사용하는 거라면

+0

숙제입니까? (즉, 배열을 사용해야합니까, 아니면 다른 데이터 구조도 괜찮습니까?) – Ryan

+0

내 대학을위한 프로그래밍 할당이고 배열에 기반한 코드에서 주 알고리즘을 구조화 했으므로 사용할 수 없습니다 다른 데이터 구조 – Vbv123

+0

기본 제공 정렬을 사용할 수 있습니까? – Ryan

답변

0

문자열 배열을 사용하는 것은 좋은 생각이 아니다. 배열에서 특정 항목을 제거 닷넷

+1

이 파싱 물건들은 모두 불필요합니다. '# 10 : 45 : 00 AM #'은 이미'Date' 리터럴입니다. 따라서 이는 일종의 정렬 일 뿐이며 요청시 오전 12시를 제거하지 않습니다. – Ryan

+0

@Ryan이 공백 문자를 제거하도록 편집하여 형식이 다음과 같아야합니다. ** # 07:00:00 AM # ** – Mederic

0

것도 없지만 "단순화"될 수 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'와 같은 특수 제네릭 컬렉션을 "더 나은 대안"으로 사용하는 것이 좋습니다 린치? –

+0

@JimMischel 조금 주관적 이었으므로 효율적으로 바꿨습니다. LINQ 오버 헤드가 적어지고 메모리 할당이 줄어들고 프로그래밍에 익숙하지 않은 사용자가 더 쉽게 구현할 수 있습니다. – Slai

관련 문제