code

다양한 데이터 구조의 실제 사용

codestyles 2020. 8. 27. 07:49
반응형

다양한 데이터 구조의 실제 사용


데이터 구조에 대해 많은 이야기가 있지만, 데이터 구조와 실제 사용에 대한 간단한 목록을 찾을 수 없습니다. 나는 인터뷰를 위해 공부하려고 노력하고 있는데 이것이 다른 많은 사람들과 함께 저를 도울 것이라고 생각합니다. 다음과 같은 것을 찾고 있습니다.

데이터 구조-예 / 사용

해시 테이블-빠른 데이터 조회 ... 예제 제공

어레이-...

이진 트리-...

어딘가에 이와 같은 리소스가 있으면 알려주십시오.

감사!

편집 : 위키피디아는 훌륭하지만 대부분의 페이지에서 실제로 실용적인 용도를 나열하지 않습니다. 그 이상의 것을 찾고 있습니다.


이전에 StackOverflow에서 비슷한 질문에서 목록을 찾았습니다.

해시 테이블-빠른 데이터 조회에 사용-컴파일러, 데이터베이스 인덱싱, 캐시, 고유 데이터 표현을위한 기호 테이블.

Trie-자동 완성 및 맞춤법 검사를 위해 휴대폰에있는 것과 같은 사전.

접미사 트리-대부분의 워드 프로세서에서 사용되는 빠른 전체 텍스트 검색.

스택-워드 프로세서의 실행 취소 / 다시 실행, 표현식 평가 및 구문 분석, JVM과 같은 많은 가상 머신은 스택 지향적입니다.

큐-다양한 엔터티가 저장되고 나중에 처리 될 수 있도록 보관되는 전송 및 작업 연구, 즉 큐가 버퍼의 기능을 수행합니다.

우선 순위 큐-커널에서 프로세스 스케줄링

트리-파서, 파일 시스템

기수 트리-IP 라우팅 테이블

BSP 트리-3D 컴퓨터 그래픽

그래프-소셜 네트워킹 사이트의 연결 / 관계, 라우팅, 통신 네트워크, 데이터 구성 등

힙-lisp의 동적 메모리 할당

이것은 RV Pradeep이 처음 게시 한 답변입니다.

기타 덜 유용한 링크 :

응용 프로그램은 일부 데이터 구조에 대해서만 나열됩니다.

적절한 요약 및 관련성에 의해 애플리케이션 중심이 아님


나는 당신과 같은 배에 있습니다. 기술 인터뷰를 위해 공부해야하는데 목록을 외우는 것은별로 도움이되지 않습니다. 3-4 시간의 여유가 있고 더 깊이 다이빙을하고 싶다면 체크 아웃을 추천합니다.

mycodeschool
저는 Coursera와 블로그 및 교과서와 같은 기타 리소스를 살펴 봤지만, 충분히 포괄적이지 않거나 스펙트럼의 반대쪽 끝에서 필수 컴퓨터 과학 용어로 너무 조밀하다는 것을 발견했습니다.

비디오의 친구는 데이터 구조에 대한 많은 강의를 가지고 있습니다. 어리석은 그림이나 약간의 악센트는 신경 쓰지 마십시오. 선택할 데이터 구조뿐만 아니라 사람들이 데이터 구조에 대해 생각할 때 고려해야 할 몇 가지 다른 사항을 이해해야합니다.

  • 공통 데이터 구조의 장단점
  • 각 데이터 구조가 존재하는 이유
  • 실제로 메모리에서 어떻게 작동하는지
  • 특정 질문 / 연습 및 효율성 극대화를 위해 사용할 구조 결정
  • lucid Big 0 설명

관심이 있으시면 github에 메모를 게시했습니다.


Skienna 의 우수한 책 " 알고리즘 설계 매뉴얼" 에는 알고리즘 및 데이터 구조의 방대한 저장소가 포함되어 있습니다.

수많은 문제에 대해 데이터 구조와 알고리즘이 설명, 비교 및 ​​실제 사용에 대해 논의됩니다. 저자는 또한 구현 및 원본 연구 논문에 대한 참조를 제공합니다.

이 책은 문제를 해결하기위한 최상의 데이터 구조를 검색하는 경우 책상에 두는 것이 좋습니다. 면접 준비에도 도움이됩니다.

또 다른 훌륭한 리소스는 NIST 데이터 구조 및 알고리즘 사전입니다 .


내 이해에 따르면 데이터 구조는 효율적으로 관리 할 수있는 모든 전자 시스템의 메모리에 상주하는 데이터입니다. 많은 경우 메모리 게임이거나 데이터에 대한 더 빠른 접근성입니다. 메모리 측면에서도 최종 제품의 회사에 대한 비용을 기준으로 데이터 관리와 관련된 절충안이 있습니다. 효율적인 관리는 최종 제품의 기본 요구 사항을 기반으로 데이터에 가장 잘 액세스 할 수있는 방법을 알려줍니다. 이것은 매우 높은 수준의 설명이지만 데이터 구조는 방대한 주제입니다. 대부분의 면접관은 연결 목록 및 관련 주제 인 시간에 따라 면접에서 토론 할 수있는 데이터 구조에 뛰어 듭니다.

Now, these data types can be divided into primitive, abstract, composite, based on the way they are logically constructed and accessed.

  • primitive data structures are basic building blocks for all data structures, they have a continuous memory for them: boolean, char, int, float, double, string.
  • composite data structures are data structures that are composed of more than one primitive data types.class, structure, union, array/record.
  • abstract datatypes are composite datatypes that have way to access them efficiently which is called as an algorithm. Depending on the way the data is accessed data structures are divided into linear and non linear datatypes. Linked lists, stacks, queues, etc are linear data types. heaps, binary trees and hash tables etc are non linear data types.

I hope this helps you dive in.


Any ranking of various data structures will be at least partially tied to problem context. It would help to learn how to analyze time and space performance of algorithms. Typically, "big O notation" is used, e.g. binary search is in O(log n) time, which means that the time to search for an element is the log (in base 2, implicitly) of the number of elements. Intuitively, since every step discards half of the remaining data as irrelevant, doubling the number of elements will increases the time by 1 step. (Binary search scales rather well.) Space performance concerns how the amount of memory grows for larger data sets. Also, note that big-O notation ignores constant factors - for smaller data sets, an O(n^2) algorithm may still be faster than an O(n * log n) algorithm that has a higher constant factor. Complex algorithms often have more work to do on startup.

Besides time and space, other characteristics include whether a data structure is sorted (trees and skiplists are sorted, hash tables are not), persistence (binary trees can reuse pointers from older versions, while hash tables are modified in place), etc.

While you'll need to learn the behavior of several data structures to be able to compare them, one way to develop a sense for why they differ in performance is to closely study a few. I'd suggest comparing singly-linked lists, binary search trees, and skip lists, all of which are relatively simple, but have very different characteristics. Think about how much work it takes to find a value, add a new value, find all values in order, etc.

There are various texts on analyzing algorithms / data structure performance that people recommend, but what really made them make sense to me was learning OCaml. Dealing with complex data structures is ML's strong suit, and their behavior is much clearer when you can avoid pointers and memory management as in C. (Learning OCaml just to understand data structures is almost certainly the long way around, though. :) )


Few more Practical Application of data structures

Red-Black Trees (Used when there is frequent Insertion/Deletion and few searches) - K-mean Clustering using red black tree, Databases, Simple-minded database, searching words inside dictionaries, searching on web

AVL Trees (More Search and less of Insertion/Deletion) - Data Analysis and Data Mining and the applications which involves more searches

Min Heap - Clustering Algorithms

참고URL : https://stackoverflow.com/questions/1539069/practical-uses-of-different-data-structures

반응형