참고 문서 |
---|
특별한 key 값을 비교하여 차례대로 나열하는 것
정렬에는 오름 차순과 내림 차순이 있다.
오름 차순 : 순서가 작은 것에서 큰 순으로 배열하는 것
내림 차순 : 순서가 큰 것에서 작은 순으로 배열하는 것
정렬(Sort)
버블정렬(Bubble Sort)
배열의 가장 처음 요소에서부터 인접해 있는 두 요소끼리 비교를 해서 자리를
맞바꾸는 방식으로 하는 정렬
일단 한번의 루프를 돌면, 가장 큰 요소가 배열의 가장 끝에 놓이게 된다.
그 다음에는 가장 큰 요소를 제외한 배열의 요소끼리 앞의 방식대로 비교를
해서 그 중에서 큰 요소(전체에서는 두 번째로 큰 요소)를 비교한 배열의 끝
(끝에서 두 번째)에 놓는다.
이런 식으로 반복을 계속하면 데이터가 오름 차순으로 정렬된다.
#include <stdio.h> int main(void) { int data[5]={94,9,67,1,120}; int i,j,tmp; for(i=0;i<5;i++) printf("%8d",data[i]); printf("\n"); for(i=0 ; i<4 ; i++) for(j=0 ; j<4-i ; j++) if(data[j] > data[j+1]) /* 오름 차순 */ /* if(data[j] < data[j+1]) */ /* 내림 차순 */ { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; }; printf("sort result ...\n"); for(j=0;j<5;j++) /* 정렬된 결과 출력 */ printf("%8d",data[j]); printf("\n"); return 0; }
퀵 정렬(Quick Sort)
함수 qsort()
함수의 원형
void qsort(void *base, size_t num, size_t size,
int(*compare)(const void*, const void*));
퀵 정렬(quick sort) 알고리즘을 이용하여 base가 가리키는 배열을 정렬한다.
알고리즘이 멈추면 배열의 데이터가 정렬된다.
배열 내의 원소의 수는 num에 의해 지정되고, 각 원소의 크기는 size로 지정된다.
compare가 가리키는 함수는 배열에 있는 2개의 원소를 비교하기 위해 사용되며,
형식은 다음과 같다.
int function_name(const void *arg1, const void *arg2);
arg1이 arg2보다 작은 경우, 0보다 작은 값을 반환한다.
arg1과 arg2가 같은 경우, 0을 반환한다.
arg1이 arg2보다 큰 경우, 0보다 큰 값을 반환한다.
#include <stdio.h> #include <stdlib.h> int comp(const void *i,const void *j); int main(void) { int data[5]={94,9,67,1,120}; int i,j,tmp; for(i=0;i<5;i++) printf("%8d",data[i]); printf("\n"); qsort(data,5,sizeof(int),comp); printf("sort result ...\n"); for(j=0;j<5;j++) printf("%8d",data[j]); printf("\n"); return 0; } int comp(const void *i,const void *j) { return *(int *)i - *(int *)j; }
C 언어에서 배열과 함께 알아야 할 것은 메모리 주소에 대한 개념
배열 변수 명은 그 배열의 선두주소를 갖는 포인터 상수
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
43 | 구조체 포인터 | 2014.06.15 | 931 |
42 | 구조체의 선언과 데이터 입·출력 | 2014.06.15 | 3084 |
41 | 함수 포인터 | 2014.06.15 | 447 |
40 | 배열과 포인터 | 2014.06.15 | 406 |
39 | 포인터 연산 | 2014.06.15 | 384 |
38 | 포인터 변수 | 2014.06.15 | 414 |
» | 데이터 정렬 | 2014.06.15 | 424 |
36 | 배열 초기화 | 2014.06.14 | 630 |
35 | 2차원 배열 | 2014.06.14 | 670 |
34 | 문자열 처리 함수 | 2014.06.14 | 412 |
33 | 문자열 입출력 함수 | 2014.06.14 | 442 |
32 | 접근 수정자 | 2014.06.14 | 824 |
31 | 전역 변수 | 2014.06.14 | 308 |
30 | 지역 변수(local variable) | 2014.06.14 | 295 |
29 | 변수와 메모리 저장 위치 | 2014.06.14 | 428 |
28 | 비트 연산자 | 2014.06.14 | 288 |
27 | 관계 연산자와 논리 연산자 | 2014.06.14 | 472 |
26 | 증감 연산자 | 2014.06.14 | 319 |
25 | printf() 함수의 형식 지정자 | 2014.06.14 | 7522 |
24 | 열거 형 변수의 이해 | 2014.06.14 | 465 |