본문 바로가기

분류 전체보기

(47)
[알고리즘] 쉘 정렬 (Shell Sort) 쉘정렬이란, 선택정렬의 인접한 레코드를 바꿔 그룹을 나누어, 그룹마다의 선택정렬을 수행하는 정렬 방식을 통해 느려짐을 완화한 정렬 방식이다. ( 쉘 정렬의 경우 그룹의 크기만큼 레코드 이동이 가능해짐! ) void ShellSort(int A[], int n){ //입력 : A[0:n-1],n: 정렬할 원소의 개수 //출력 : A[0:n-1] : 정렬된 배열 int h,i,j,Value; h=1; do h = 3*h+1; while (h h->4 -> h=1로 진행된다. do { h=h/3; for (i=h; iValue){ A[j]=A[j-h]; j -= h; if (j1); n을 넘지 않는 h값을 찾아서 진행한다. 선..
[데이터통신] 컴퓨터 네트워크 컴퓨터 네트워크란? 단일 기술로 상호 연결된 자율 컴퓨터 집합을 의미 상호연결: 두 대의 컴퓨터가 정보를 교환할 수 있는 상태 연결은 다양한 방식을 사용 ( 구리선 광섬유 마이크로파 적외선 및 통신 위성등) 메인프레임에 연결된 다수의 터미널은 자율적이지 않기 때문에 컴퓨터 네트워크가 아니다. 단일 기술로 상호연결되어있기 때문에 동일한 네트워크에 있는 모든 기계와 대화하거나 통신이 가능하다. 분산 시스템과 네트워크의 차이점 분산시스템: 독립적인 컴퓨터의 집합이 사용자에게 하나의 일관된 시스템으로 나타난다. == 하나의 컴퓨터로 보여진다. middleware등 컴퓨터 네트워크의 모든 세부 사항을 숨기는 소프트웨어가 필요 분산시스템의 예시 : WWW, cloud(fog) computing, GRID 분산 시스..
[알고리즘] 삽입정렬(Insertion Sort) 삽입정렬이란 앞부분 데이터는 정렬이 되어 있다고 가정하고, 뒷부분 데이터가 정렬된 데이터중 어느 곳에 있어야 적절한지를 판단하여 절렬하는 정렬방식이다. A[0]에는 dummy데이터 (마이너스 무한대),가 있다고 가정한다. (매번 첫번째 데이터인지 확인하지 않아서 더 효율적이다. 이때 컴퓨터에는 마이너스 무한대라는 것이 없기 때문에 정수 최대값을 사용한다. void InsertionSort(int A[],int n){ // 입력 : A[0:n],n:원소의 개수, A[0]:dummy // 출력 : A[0:n] : A[0]:dummy , A[1:n]은 정렬된 배열 int i, j, value; for (i = 2; i Value){ A[j] = A[j-1]; j--; } A[j]=value; } } 제자리성 ..
[알고리즘] 버블정렬(Bubble Sort) 버블정렬은 인접한 데이터들 간의 자리바꿈을 하는 정렬방식이다. void BubbleSort(int A[], int n){ int i; bool Sorted; while (!Sorted){ Sorted= true; for(i=1;iA[i]){ Swap(&A[i-1],&A[i]); Sorted = false; n--; } } } } 최선시간복잡도 : O(n)(이미 정렬이 완료된 배열을 정렬하는 경우) 평균시간복잡도 : O(n^2) 최악시간복잡도 : O(n^2) 제자리성 : 제자리 정렬 (상수 크기 메모리이기 때문에 제자리 정렬이다.) 안정성 : 안정된 정렬 (인접한 레코드만 자리바꿈 : 키값이 같을때 자리가 바뀌지 않기 때문에 안정적이다.)
[알고리즘] 선택정렬 (SelectionSort) 선택정렬은 모든 레코드가 key값으로 표현되어, 한 원소와 나머지 모든 원소를 비교하는 정렬이다. void SelectionSort(int A[], int n){ int i, j,MinIndex; for(i=0;i 복잡도는 입력자료 순서와 무관하다. 평균시간 복잡도=O(n^2) 최악시간 복잡도=O(n^2) 선택정렬의 경우 데이터의 내요ㅛㅇ과 관계없이 항상 마지막 단계까지 모든 비교가 이루어지기 때문에 평균 시간복잡도 == 최악시간복잡도이다. 제자리성 : 제자리 정렬 (주어진 메모리 공간 외에 추가적으로 사용하는 (상수크기) 메모리가 없는 정렬) 안정성 : 불안정한 정렬 (정렬후에 같은 값인 요소의 순서가 보장되지 않는 정렬방식) 인접한 요소와 스와칭이 일러나면 대부분 안정한 정렬이다.(떨어져있는 요소와 ..
[알고리즘] 알고리즘이란? program은 자료구조 + 알고리즘으로 이루어져있다. 예를 들어 최대값 탐색 프로그램을 짠다고 하면 그 안에는 탐색할 요소가 담긴 자료구조(ex. List) + 해당 알고리즘(ex. 순차탐색)이 들어있을 것이다. 이때 자료구조는 쉬운 접근과 수정을 위해 데이터를 조직하고 저장하는 방법이다. 자료구조에는 아래 표와 같이 크게 다섯가지가 있다. List Stack Queue Tree Graph 알고리즘의 유래 알고리즘은 Al-Khowarizmi (알콰리즈미)라는 한 수학자의 이름에서 착안되었다. 알고리즘의 정의 전형적으로 입력을 출력으로 변환하는 일련의 계산 단계를 의미한다. 알고리즘의 두가지 조건 정당성 - 모든 인풋에 대하여 정확한 아웃풋이 나오고 종료되어야 한다. (무한루프는 정당하지 않음) 효율성 ..
replacingOccurrences(of:with:)함수 이 메소드는 문자열을 특정 다른 문자열로 대체하는 함수이다. 이 함수는 'String'클래스의 메서드로 사용된다. func replacingOccurrences( of target: String, with replacement: String ) -> String Parameters target 원본 문자열에서 대체하려는 부분 문자열 replacement 대체하고자하는 새로운 문자열 Return Value 원본 문자열에서 모든 ' target '을 찾아서 각각을 ' replacement '로 대체한 새로운 문자열을 반환한다. 사용예시!!
[SWIFT] self VS Self self Self 의미 인스턴스를 가리킴 타입을 가리킴 (타입은 늘 대문자로 시작함 원칙 적용) 설명 모든 인스턴스들이 암시적으로 생성하는 속성 Self가 특정한 타입을 가리키는 건 아님 특정 타입 내부에서 사용하여 해당 타입을 가리키는 것 예시 "happy" , 7 , ... String , Int , ... self 의미 : 인스턴스를 가리킴 (모든 인스턴스들이 암시적으로 생성하는 속성) 목적 1 ) 인스턴스를 가르키기 위해 사용 class Person { var name: String var age : Int init(name: String, age: Int) { self.name = name self.age = age } } let jane = Person(name: "jane", age: 21)..