'쉘 정렬' 태그의 글 목록
본문 바로가기
728x90

쉘 정렬3

c언어 - 쉘 정렬 (Shell's Sort) 쉘정렬은 삽입 정렬의 개선판으로 생각하고 접근하면 편하다. 그러므로 사전지식으로 삽입정렬을 이해하고 있어야한다. 간단하게 삽입 정렬은 한번에 하나의 값만 바꿔가며 정렬하는 알고리즘이다. 만약 8,2,4,5,1,9 라는 배열이 있다고 가정하고 삽입 정렬을 하면 단1회 만으로 1,2,4,5,8,9 로 정렬이 된다. 이런 장점을 키운 정렬이 쉘 정렬이다. *참고 - 삽입 정렬 쉘 정렬은 갭의 크기가 줄어들면서 정렬되는 알고리즘이다. 예를들어 n개의 값을 가지고 있는 배열이 있다고 가정하면, 처음 갭은 n/2인 값으로 그 후의 갭은 전의 갭/2 인 값으로 정렬해 나간다. *갭은 짝수보다 홀수가 좋다, 갭이 짝수일때 + 1을 해서 홀수를 만들어주자 *c언어에서 정수인 변수의 소숫점은 무시된다. ex) 1.9 =>.. 2020. 12. 18.
C언어 - 버블 정렬 (Bubble Sort), 버블 정렬 개선 파도타듯 두 값씩 정렬해가면서 큰 수를 맨 뒤로 보내면서 채워간다 마지막 수를 제외하고 다시 처음부터 반복하여 비교하며 정렬하는 알고리즘이다. 순차 정렬, 버블 정렬, 선택 정렬 세 정렬은 코드는 단순하나 컴퓨터 입장에서 비효율 적이여서 싫어하는 정렬이다. 비교대상이 30개 미만일 경우 사용하기에 좋다. 비교 횟수는 n-1 -> n-2 -> n-3 -> ... -> n-n+3 -> n-n+2 -> n-n-1 순으로 값이 줄어들며 비교된다. 비교하는 값은 노란색 정렬후 값은 보라색 핵심 알고리즘 void BubbleSort(int *arr,int n, int i, int j){ for(i=n-1; i>0; i--){ for(j=0; j arr[j+1]){ swap(&arr[j],&arr[j+1]); } }.. 2020. 11. 27.
C언어 - 정렬 (Sort) 정렬이란 Computer Science 에서 정렬 알고리즘은 데이터를 일정한 순서로 나열하는것이다. 흔히 사용되는 것은 숫자 정렬과 문자 정렬 (사전순 정렬)이다. 좋은 정렬을 만들기 위해 알고리즘의 최적화가 중요하다. 정렬에는 다양한 종류가 존재한다. 크게 내부 정렬과 외부 정렬이 존재하고 내부 정렬은 하나의 배열에 저장할 수 있을 경우 사용되고 외부 정렬은 데이터가 많아 하나의 배열로 저장하기 어려울때 사용된다. 외부 정렬은 내부 정렬을 응용한 정렬이기 때문에 내부 정렬을 먼저 공부하면 된다. 내부정렬에는 순차 정렬, 버블 정렬, 선택 정렬, 삽입 정렬, 쉘 정렬, 퀵 정렬, 병합 정렬, 힙 정렬, 도수정렬 등 다양하게 존재한다. 순차 정렬 자세히 보기 버블 정렬 자세히 보기 선택 정렬 자세히 보기 .. 2020. 11. 13.
728x90