본문 바로가기
728x90
반응형

C# 공부25

[자료구조] 시간 복잡도 정리 자료 구조 삽입 검색 삭제 인덱스 접근 T[] O(n) O(n) O(n) O(1) List O(1) O(n) O(n) O(1) LinkedList O(1) O(n) O(n) O(n) Dictionary O(1) O(1) O(1) - SortedDictionary O(log n) O(log n) O(log n) - HashSet O(1) O(1) O(1) - SortedSet O(log n) O(log n) O(log n) - Stack O(1) - O(1) - Queue O(1) - O(1) - 2023. 6. 21.
[자료구조] 동적 배열(Dynamic Array) 동적 배열의 필요성 -배열은 고정된 크기의 연속된 배열 요소들의 집합이므로 배열을 초기화 시 미리 배열의 크기를 정해야 한다. -그러나 때론 미리 이 크기를 정할수 없는 경우가 있고, 중간에 배열을 확장해야 하는 경우가 있다. -이런 상황에 사용하는 것이 동적 배열이며 .NET에는 ArrayList와 List가 있다. 동적 배열의 시간 복잡도 -배열(정적 배열)과 같이 인덱스를 통해 한 요소에 접근시 O(1) -배열의 요소 개수 n개에 대하여 특정 값을 탐색하는 시간 O(n) ArrayList 클래스 -모든 배열 요소가 object 타입인 Non-Generic 동적 배열 클래스다. -.Net의 Non-Generic클래스들은 System.Collections namespace 안에 있다. -박싱(value.. 2023. 6. 21.
[자료구조] 배열(Array) 배열 -연속적인 메모리상에 동일한 타입(or 그의 파생타입)의 요소를 일렬로 저장하는 자료구조 -인덱스를 사용하여 직접적으로 엑세스 가능 -고정된 크기를 갖는다 -> 초기화시 해당 크기 그대로 유지 (중간에 새로 사이즈를 바꾸지 않는다면) 배열의 시간 복잡도 -배열의 사이즈와 상관없이 한 요소에 접근하는 시간은 인덱스 사용시 O(1) -특정 요소를 찾기 위해선 배열의 크기 n에 대하여 O(n) 배열 최적화 -정렬된 배열에서 값을 찾는 경우, Binary Search를 이용하여 O(long n) 가능 배열 사용법 -ex) 1부터 10까지 합을 출력하는 프로그램 class Program { static void Main(string[] args) { int[] numArray = new int[10]; in.. 2023. 6. 20.
garbage_collection Study about garbage collection 가비지 컬렉션은 자동 메모리 관리를 해줌 CLR 내에서 가비지 컬렉터가 가비지 컬렉션을 담당함 가비지 컬렉터도 소프트웨어로 컴퓨팅 자원을 사용함 CLR에서 메모리에 객체 할당 방법 관리되는 힙을 위한 메모리 공간 확보 확보한 공간 첫 번째 공간에 다음 객체를 할당할 메모리의 포인터를 넣는다. 값 형식의 객체는 스택에 할당되어 코드블럭이 끝나면 메모리 소멸 참조 형식의 객체는 힙에 할당되어 코드블럭에 상관없이 존재 static void Main(string[] args) { if(true) { object a = new object(); } } if 블로내 참조 a 메모리가 있고 객체화 a는 힙에 저장되어 있다. if문이 끝나면 스택 a 메모리가 소멸.. 2021. 8. 29.
thread Study about thread and task 운영체제를 미리 배웠기에 대략 정리한것 자세한건 운영체제 강의 복습(공부) 꼭 하기 process and thread 프로세스는 실행 파일이 실행되어 메모리에 적재된 인스턴스로 하나 이상의 스레드로 구성된다. 스레드는 운영체제가 CPU 시간을 할당하는 기본 단위 multi thread 사용자 대화형 프로그램에서 응답성을 높임 메모리 자원을 할당하는 비용 절감 (경제성) 멀티 프로세스 방식에 비해 자원 공유가 쉬움 구현하기 까다롭고 테스트가 쉽지 않음 과다한 사용은 context switching이 빈번해 성능 저하를 야기 자식 스레드의 문제가 생기면 전체 프로세스에 영향을 끼침 using System.Threading; static void DoSomet.. 2021. 8. 28.
serializable Study about serialization 복합 데이터 형식 쓰기와 읽기는 그 형식이 가진 필드 값의 저장순서 정의 후, 이 순서대로 저장/읽기 코드 작성 이를 위해 직렬화 도입 객체상태를 메모리나 영구 저장 가능한 0과 1의 순서로 바꾸는 것이다. [Serializable] class NameCard { public string Name; public string Phone; public int Age; } static void Main() { // 직렬화 Stream ws = new FileStream("a.dat", FileMode.Create); BinaryFormatter serializer = new BinaryFormatter(); NameCard nc = new NameCard(); n.. 2021. 8. 26.
728x90
반응형