반응형

언어 자료구조 알고리즘/C언어 예제 104

C언어 별출력, 날짜와 달력, 문자열, 구조체, 자료구조, 알고리즘 관련 자료 모음

제어문을 이해하기 위해 별 출력을 요구할 때가 많죠.[C언어 소스] 역삼각형 출력[C언어 소스] 정사각형 출력 - 반복문 연습[C언어 소스] 삼각형 출력 - 반복문 연습[C언어 소스] 역삼각형 출력[C언어 소스] 다이아몬드 출력[C언어 소스] 산봉우리 출력[C언어 소스] 속이 빈 삼각형 출력 날짜 관련 처리도 많이 요구합니다.[C언어 소스] 년도와 일수 입력받아 시각 출력[C언어 소스] 1월 1일 요일 입력받아 달력 출력100분의 1초 단위로 현재 시각을 출력, C언어 소스difftimemktimetimeasctimeasctime_sctimectime_sgmtimegmtime_slocaltimelocaltime_sstrftime 문자열 관련은 필수죠.strlenstrcpystrcpy_sstrncpystr..

[C언어 소스] 성적 관리 프로그램 4가지 유형

[C언어 소스] 성적 관리 프로그램 4가지 유형 C언어로 프로그래밍할 때 데이터를 관리할 메모리를 언제 부여하게 할 것인가에 따라 여러 형태로 프로그램을 작성할 수 있습니다.이번에는 학생 성적 관리 프로그램을 4가지 유형으로 서로 비교합시다. 제공 기능1. 학생 데이터 입력2. 학생 데이터 삭제3. 학생 검색4. 목록 보기 전역 변수 사용 소스 보기동적 메모리 할당 이용 소스 보기학생 데이터를 위한 메모리도 동적 메모리 할당 이용 소스 보기 이중 연결리스트를 이용한 소스 보기

[C언어] 순차 정렬, 버블 정렬, 선택 정렬, 삽입 정열, 쉘 정렬, 퀵 정렬, 병합 정렬, 힙 정렬)

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

[C언어 소스] 힙 정렬(Heap Sort) 알고리즘

힙 정렬(Heap Sort)힙 정렬은 힙 트리를 이용하는 알고리즘입니다. 최대 힙을 사용하면 크기 순(Ascend)으로 정렬하고 최소 힙을 사용하면 크기 역순(Descend)으로 정렬합니다. 힙 정렬은 먼저 힙 트리를 구성합니다. 그리고 루트의 값과 맨 마지막 값을 교환한 후에 정렬 범위를 1 줄입니다. 이와 같은 작업을 반복하여 정렬 범위가 1일 때까지 반복합니다. 최대 힙 트리에서 루트는 최대 값을 갖습니다. 따라서 마지막 값과 교환하면 제일 큰 값이 맨 뒤로 배치할 수 있습니다. 그리고 난 후에 정렬 범위를 줄여나가면 최종적으로 정렬 상태를 만들 수 있는 것입니다. 힙 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 초기 힙 구성 루트와 맨 마지막 자손 교환 n을 1 ..

[C언어 소스] 병합 정렬(Merge Sort, 합병 정렬) 알고리즘

병합 정렬(Merge Sort, 합병 정렬) 알고리즘이번에는 병합 정렬 알고리즘을 살펴봅시다. 병합 정렬 알고리즘은 배열을 작은 단위의 배열로 분할한 후에 분할한 배열을 정렬하고 이들을 다시 정렬하면서 전체 배열을 정렬하는 알고리즘입니다. 병합 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) ah:= n/2 bh:= n - ah; 조건(n이 1보다 작거나 같으면) 종료 병합정렬(base,ah,compare) 병합접열(base+ah,bh,compare) tbase에 동적 메모리 할당(원소크기*원소개수) 메모리 복사(tbase,base) ai:=0 bi:=ah i:=0 반복(ai가 ah보다 작으면서 bi가 n보다 작다) 조건(tbase[ai]가 tbase[bi]보다 작거나 같으..

[C언어 소스] 퀵 정렬 (Quick Sort) 알고리즘

퀵 정렬(Quick Sort)퀵 정렬 알고리즘은 재귀적인 방법으로 문제를 해결하는 알고리즘입니다. 퀵 정렬 알고리즘은 피벗 값을 선택하여 피벗 값보다 작은 값들은 왼쪽으로 보내고 큰 값들은 오른쪽으로 보낸 후에 이들 사이에 피벗을 위치시키는 원리를 이용합니다. 이후 피벗보다 작은 값들을 재귀 호출로 정렬하고 피벗보다 큰 값들도 재귀 호출로 정렬하는 방식입니다. 그런데 퀵 정렬은 어떠한 요소를 피벗으로 선택하냐에 따라 성능에 차이가 납니다. 만약 전체 요소의 중간 순위의 요소를 선택하면 재귀 호출에서 반씩 나누어 정렬을 하게 되어 좋은 성능을 발휘합니다. 하지만 가장 작은 값이나 가장 큰 값을 피벗으로 선택하면 최악의 성능을 발휘합니다. 여기에서는 맨 앞과 맨 뒤, 그리고 중간 위치의 요소를 비교하에 세 ..

[C언어 소스] 쉘 정렬(Shell Sort) 알고리즘

쉘 정렬 (Shell Sort) 쉘 정렬은 삽입 정렬 알고리즘을 이용하는 정렬 방식입니다.쉘 정렬은 같은 간격에 있는 원소들을 삽입 정렬 원리로 정렬하는 것을 반복합니다. 간격의 초기값은 배열의 크기/2이며 간격이 1일 때까지 1/2로 줄이면서 반복합니다. 쉘정렬 //쉘 정렬(Shell Sort)#include #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 int *origin;int on; void ShellSort(int *base, int n);int main(void){ int arr[10] = { 9,4,3,10,5,8,7,6,2,1 }; origin = arr; on = 10; ShellSort(arr, 10); return 0;}void In..

[C언어 소스] 삽입 정렬(Insertion Sort) 알고리즘

삽입 정렬 (Insertion Sort)이번에는 반복 알고리즘 중에 삽입 정렬 알고리즘을 알아봅시다. 삽입 정렬 알고리즘은 점진적으로 정렬 범위를 넓혀 나가는 방식으로 정렬하는 알고리즘입니다. 이를 위해 새로운 범위에 포함하는 마지막 원소를 앞으로 이동하면서 자신보다 작은 요소를 찾을 때까지 이동하면서 자리를 교환합니다. 삽입 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(i:=1; i0 ; j:=j-1) 조건(compare (base [j-1], base [j]) < 0) temp: = base [j-1] base[j-1] = base [j] base[j] = temp 아니면 루프 탈출 삽입정렬 //삽입 정렬(Insertion Sort)#include #define SWAP(a..

[C언어 소스] 선택 정렬(Selection Sort) 알고리즘

선택 정렬 (Selection Sort) 이번에는 반복 알고리즘일 이용하는 선택 정렬 알고리즘을 알아봅시다. 선택 정렬 알고리즘은 제일 큰 값을 찾아 맨 뒤의 요소와 교체하는 방법을 반복하여 전체를 정렬하는 알고리즘입니다. 물론 제일 작은 값을 찾아 맨 앞의 요소와 교체하는 방법을 반복할 수도 있습니다. 선택 정렬 알고리즘을 의사코드(pseudo code: 논리적인 수행 흐름을 이해할 수 있게 작성한 코드)는 다음과 같습니다. 선택 정렬(base:컬렉션,n:원소 개수,compare:비교 논리) 반복(i:=n; i>1 ; i:= i-1) 반복(max=0,j:=1; j1; i--)//정렬할 범위를 축소해 나갑니다. { maxi = 0; for (j = 1; j

[C언어 소스] 버블 정렬 (Bubble Sort) 알고리즘

버블 정렬 (Bubble Sort) 알고리즘이번에는 반복적인 방법으로 해결하는 버블 정렬 알고리즘을 살펴봅시다. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 것을 말합니다. 이를 위해 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘을 전달합니다. 그리고 수행 후에는 배열 내의 자료들이 원하는 순서로 보관한 상태여야 합니다. 이 중에 버블 정렬은 앞에서부터 이웃하는 원소의 값을 비교하여 위치를 교환하는 것을 반복합니다. 이를 끝까지 수행하면 제일 큰 값이 맨 뒤에 위치합니다. 그리고 정렬할 개수를 1 줄인 후에 다시 반복합니다. 정렬할 원소의 개수가 1이면 모든 작업을 완료합니다. 버블 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) ..

반응형