Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- c언어문자열처리방법 #c언어문자열
- XSS #ReflectedXSS
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- 사이버포렌식 #포렌식 #FAT
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
Archives
- Today
- Total
Hello Security World
C언어로 배우는 자료구조 [선택정렬] 본문
선택 정렬의 이해
선택 정렬(Selection Sort)는 전체 원소들 중에서 기준 위치에 맞는 원소를 선택하여 자리를
교환하는 방식으로 정렬한다. 전체 원소 중에서 가장 작은 원소를 찾아 선택하여 첫 번째 원소와 자리 교환을 한다.
그 다음 두번째로 작은 원소를 찾아 선택하여 두 번째 원소와 자리를 교환하고,그 다음에는 세 번째로 작은 원소를
찾아서 세 번째 원소와 자리를 교환한다. 이 과정을 반복하면서 정렬을 완성한다.
정렬되지 않는 원소 [5,4,3,2,1] 을 선택정렬을 이용하여 오름차순 하여 정렬하자.
1회전 [1,4,3,2,5]
2회전 [1,2,3,4,5]
2회전 만에 정렬이 완료 되었다.
비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 리스트를 이와 같은 방법으로 정렬하는 데에는 Θ(n2) 만큼의 시간이 걸린다.
선택 정렬은 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> //선택정렬 void main(){ int arr[5] = {5,4,3,2,1}; int i,j,k; int tmp=0; int min=0; for(i=0;i<4;i++) { min = i; for(j=i+1;j<5;j++) { if(arr[min] > arr[j]) { min = j ; //가장 작은 값의 배열의 index 번호를 저장 } } tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } for(k=0;k<5;k++){ printf(" [%d] ",arr[k]); } } 실행결과 : [1] [2] [3] [4] [5] |
n개의 원소에 대한 선택 정렬은 n개의 메모리를 사용한다. 선택 정렬에서의 비교 횟수를 구해보면 1단계에서는 첫 번째 원소를
기준으로 n개의 원소를 비교하고 , 2단계에서는 두 번째 원소를 기준으로 마지막 원소까지 n-1개의 원소를 비교하고 , 3단계에서는
세 번째 원소를 기준으로 마지막 원소까지 n-2개의 원소를 비교한다. 이러한 방법으로 i단계에서는 i번째 원소를 기준으로
n-i개의 원소를 비교하게 되므로 전체 비교 횟수는 다음과 같다. 2 / n(n-1)
'프로그래밍 > C' 카테고리의 다른 글
C언어 [C언어 포인터의 연산] (0) | 2020.05.03 |
---|---|
C언어 [C언어 주소와 & 포인터] (0) | 2020.05.03 |
C언어 [로또번호 생성기 & 중복제거] (0) | 2020.05.03 |
C언어 [Call By Value & Call By Reference] (0) | 2020.05.03 |
C언어로 배우는 자료구조 [버블정렬] (0) | 2020.05.03 |