2018년 6월 24일 일요일

C# 자료구조


[] 배열 : 
  값으로 검색할 필요 없는 경우( 해야한다면 HashTable 이 빠르다 )
  검색시 키가 숫자인 경우 ( 키가 숫자가 아니면 Dictionary 가 빠르다 )
  맨 앞 또는 맨 뒤만 접근 하는 경우 Queue, Stack 이 빠르다


동적배열( ArrayList, List<T> ) :
           ArrayList 는 자료형에 상관 없이 아무거나 넣는 구조
           List 는 특정 자료형을 선택하여 같은 종류의 것암 넣는 구조
  배열의 크기를 확정하지 않고 유동적으로 써야 할 때
 
  검색 코드 ->
  Transform t = myList.Find( delegate(Transform tm) { return tm.name == "name"; } );



Linked List :
           노드가 다음/이전 노드의 포인터를 갖고 있다
  삽입/삭제 빠르다( 위의 표 검색 값은 O(n)으로 표기 되었지만 O(1)임 )
  검색은 전체 검색을 함 비효율


Dictionary :
           키값으로 문자도 쓸수 있고 삽입, 삭제, 검색 골고루 효율적
  단점 찾아봐야함


HashTable :
           Generic 형식이 아닌 Object를 그대로 저장하는 방식
           C#에서는 형 변환에 자원을 많이 소비하기 때문에 Dictionary가 속도면에서 효율적

           
HashSet : 
           Key-Value 구조가 아니라 유니크한 값(Value)로만 이루어져 있음
           
           



















댓글 없음:

댓글 쓰기