반응형

리스트 8

리스트(List)와 배열(Array)의 차이점

데이터 구조에서 리스트(List)와 배열(Array)은 요소 모음을 저장하고 조작하는 데 사용되는 두 가지 기본 데이터 유형입니다. 언뜻 보기에는 비슷해 보이지만 리스트(List)와 배열(Array)에는 다양한 유형의 애플리케이션에 적합한 몇 가지 주요 차이점이 있습니다. 1. 차이점 동적 크기와 정적 크기: 리스트(List)와 배열(Array)의 가장 큰 차이점 중 하나는 배열(Array)은 고정된 정적 크기인 반면, 리스트(List)은 요소를 추가하거나 제거할 때 동적으로 커지거나 작아질 수 있다는 점입니다. 즉, 배열(Array)은 컬렉션의 크기를 미리 알고 있고 변경될 가능성이 거의 없는 상황에 가장 적합한 반면, 리스트(List)은 컬렉션의 크기를 동적으로 조정해야 하는 상황에 더 적합합니다. ..

공부/기타 2023.04.03

자료 구조(Data structure)란?

1. 자료 구조란? 자료 구조(data structure)는 데이터를 효율적으로 액세스하고 조작할 수 있도록 컴퓨터에서 데이터를 구성하고 저장하는 방법입니다. 자료 구조에는 여러 가지 유형이 있으며, 각각 고유한 장단점이 있으므로 올바른 데이터 구조를 선택하는 것은 효율적이고 효과적인 알고리즘이나 프로그램을 설계하는 데 있어 중요한 부분입니다. 2. 자료 구조의 유형 다음은 가장 일반적인 데이터 구조의 몇 가지 유형입니다: 배열: 배열은 인접한 메모리 위치에 저장되는 요소들의 모음입니다. 배열은 인덱스를 통해 빠르게 액세스할 수 있으므로 예측 가능한 순서로 데이터를 저장하고 검색하는 데 유용합니다. 연결 리스트: 링크된 목록은 노드에 저장된 요소의 모음으로, 각 노드는 목록의 다음 노드에 대한 참조를 포..

공부/자료구조 2023.03.28

컬렉션(Collection)의 종류

1. 컬렉션(Collection)의 개념 C#에서 컬렉션(Collection)은 모든 유형의 요소 그룹을 담을 수 있는 데이터 구조입니다. 다음은 C#에서 사용할 수 있는 다양한 컬렉션 유형입니다 2. 컬렉션(Collection)의 종류 배열(Array): 배열은 동일한 유형의 요소 그룹을 담을 수 있는 고정 크기 컬렉션입니다. 배열은 한 번 생성되면 크기를 변경할 수 없습니다. 배열은 인덱스를 사용하여 액세스하고 요소는 인접한 메모리 위치에 저장됩니다. 목록(List): 목록은 모든 유형의 요소 그룹을 포함할 수 있는 동적 컬렉션입니다. 배열과 달리 리스트의 크기는 런타임에 변경할 수 있습니다. 목록은 인덱스를 사용하여 액세스하며 요소는 비연속적인 메모리 위치에 저장됩니다. 딕셔너리(Dictionari..

공부/C# 2023.03.05

리스트(List)에서 100만번째 데이터를 찾는데 검색 속도를 줄이려면 어떻게 해야할까?

리스트 구조에서 백만 번째 데이터를 찾기 위해 검색 속도를 줄이는 것은 목록 검색의 선형 시간 복잡성으로 인해 어려울 수 있습니다. 그러나 다음 방법들은 검색 속도를 개선하는 데 도움이 되는 몇 가지 전략입니다. 1. 인덱싱 : 한 가지 접근 방식은 데이터를 목록의 해당 위치에 매핑하는 인덱스를 만드는 것입니다. 이렇게 하면 목록에서 올바른 위치로 빠르게 이동하여 원하는 데이터를 찾을 수 있습니다. 2. 정렬(Sorting) : List의 데이터를 정렬하면 이진 검색 알고리즘을 사용하여 로그 시간으로 원하는 데이터를 찾을 수 있습니다. 3. 해시 테이블 : 또 다른 접근 방식은 해시 테이블을 사용하여 목록에 데이터를 저장하고 데이터를 해당 위치에 매핑하는 것입니다. 이를 통해 일정 시간 조회를 사용하여 ..

공부/자료구조 2023.02.11

삽입, 삭제가 계속 일어난다고 했을 때 Vector가 느릴까? List가 느릴까?

특정 상황과 데이터 크기에 따라 다르겠지만, 일반적으로 데이터가 작을 경우, 요소를 삽입하거나 삭제할 때는 리스트가 더 빠르며 데이터가 클 경우, 중간에 요소를 삽입하거나 삭제할 때는 벡터가 더 빠릅니다. 이는 벡터가 연속 메모리에 요소를 저장하기 때문에 벡터 중간에 요소를 삽입하거나 삭제하려면 삽입 또는 삭제 지점 이후의 모든 요소를 이동해야 하지만 리스트은 단순히 요소를 삽입하거나 삭제하기 위해 포인터를 조정할 수 있습니다. 그러나 벡터는 리스트에 비해 메모리를 덜 사용하기 때문에 메모리 효율성도 더 높습니다.

공부/기타 2023.01.13

데이터 내부에 값이 1만개 이하일 경우 Vector가 빠를까? List가 빠를까?

만약 특정한 데이터를 찾을 경우 벡터가 리스트보다 빠르다. 왜냐하면 벡터가 연속된 메모리를 사용하고, 또 operator[]를 사용하여 일정한 시간에 액세스할 수 있기 때문이다. 반면에 리스트는 노드들이 일련의 연결로 구성되어 있으며 특정 요소에 액세스하려면 리스트 전체의 처음부터 끝까지 확인해야 하기 때문입니다. 그렇지만, 컨테이너 중간에 요소를 삽입하거나 삭제해야 하는 경우 리스트가 일반적으로 벡터보다 빠릅니다. 이렇게 하면 반복자와 참조가 무효화되지 않습니다. 반면에 벡터를 사용하면 메모리를 재할당하고 메모리를 재할당해야 할 수 있습니다. 이럴 경우 모든 요소를 새 메모리 위치에 복사합니다. 이로 인해 리스트가 벡터보다 작업을 빠르게 진행할 수 있습니다. 그렇지만, 리스트의 각 요소는 별도의 노드로..

공부/기타 2023.01.11

벡터(Vector)와 리스트(List)의 개념 및 차이점

1. 벡터(Vector) 벡터의 개념을 알기 위해서는 먼저, 배열을 알아야 합니다. 배열은 모두 동일한 유형을 갖는 요소들을 저장하는 데이터 구조입니다. 이 요소들은 저장 될 때 메모리에 연속적으로 저장됩니다. 즉, 요소와 요소 사이에 간격이 없이 차례로 메모리에 배치됩니다. 배열은 배열의 위치(인덱스(index))에 따라 배열 개별 요소에 효율적으로 액세스할 수 있는 간단한 데이터 구조입니다. 배열에 있는 요소의 인덱스는 배열에 있는 요소의 위치에 해당하는 음이 아닌 정수입니다. 즉, 첫 번째 요소는 인덱스가 0이고 두 번째 요소는 인덱스가 1인 식입니다. 배열의 각 요소는 배열 표기법을 사용하여 인덱스로 액세스할 수 있습니다. 예를 들어 myArray[i]는 myArray의 i번째 요소를 반환합니다...

공부/C++ 2023.01.10

13. 열번째 수업

경일게임아카데미 프로그래밍반 28기 10일차 수업 (2021. 04. 21) 리스트 구현 리스트는 일반적으로 데이터가 1만개 이상일 때 빠르다. 리스트의 종류로는 순차리스트, 연결리스트가 있으며 연결 리스트에는 단일 연결리스트, 원형 연결리스트, 이중 연결리스트 등이 있다. List.h #pragma once #include #include using namespace std; class ListTest { private: list _lNum; list::iterator _liNum; public: ListTest(); ~ListTest(); }; List.cpp #include "210421 1. ListTest.h" ListTest::ListTest() { _lNum.push_back(100); _l..

반응형