Develop
2003.04.23 11:00

[c] 문자열 정렬 함수 qsort()

조회 수 8271 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
기능
quicksort 알고리즘을 이용하여 정렬한다.

문법
#include <stdlib.h> 
void qsort(void *base, size_t nelem, size_t width, int(*fcmp)(const void *, const_void*));
DOSUNIXWindowsANSI CC++ only
  

주석
qsort는 quicksort 알고리즘의 변형인 "3의 메디안"을 구현한 것이다.

qsort는 fcmp가 가리키는 사용자 정의 비교함수를 반복적으로 호출하여 테이블 내의 엔트리를 정렬한다.

■ base는 정렬될 테이블의 기준(0번째 원소)을 가리킨다.
■ nelem은 테이블 내의 엔트리의 갯수이다.
■ width는 byte 단위로 표시된 테이블 내의 각 엔트리의 크기이다.

비교함수 *fcmp는 각각 테이블 내의 엔트리를 지시하는 두 개의 인수 elem1과 elem2를 받아들인다.
지시된 개개의 항목들(*elem 1과 *elem2)을 비교하고 비교한 결과에 따라 다음과 같은 정수를 반환한다.

*elem1 < *elem2 fcmp은 0보다 작은 정수를 반환한다.
*elem1 == *elem2 fcmp은 0을 반환한다.
*elem1 > *elem2 fcmp은 0보다 큰 정수를 반환한다.

비교시 '보다 작음' 기호(<)는 좌측원소가 우측원소보다 뒤에 나타나야 함을 의미한다.

반환값
없음.

참조
bsearch, lsearch

예제
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int sort_function( const void *a, const void *b);
char list[5][4] = { "cat", "car", "cab", "cap", "can" };

int main(void){
    int x;
    qsort((void *)list, 5, sizeof(list[0]), sort_function);
    for (x = 0; x < 5; x++) printf("%sn", list[x]);
    return 0;
}

int sort_function( const void *a, const void *b){
    return( strcmp((char *)a,(char *)b) );
}

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
729 Develop [ios] Swift 4 String, Date, DateFormatter 예제 hooni 2018.10.18 1507
728 Develop [swift] popToRoot 모달뷰, 네비게이션컨트롤러 한꺼번에 닫기 file hooni 2021.01.29 1557
727 Develop What is difference between Get, Post, Put and Delete? hooni 2018.02.28 1563
726 Develop How to Test SMTP AUTH using Telnet hooni 2018.04.05 1585
725 Develop [android] 레이아웃 사이즈 변경 (동적; programmatically) hooni 2016.11.07 1607
724 Develop [ios] binary를 C코드로 변환 file hooni 2015.01.03 1643
723 Develop [ios] 스크린 캡쳐 (전원버튼 + 홈버튼) 호출 알아내기 hooni 2014.11.19 1650
722 Develop [ios] Swift 4 Singleton inheritance hooni 2018.10.31 1687
721 Develop [python] 파라미터 앞에 *, ** 의 의미? (*args, **kwargs) hooni 2019.11.22 1689
720 Develop [js] 모바일 스크롤 방지(해제) hooni 2015.04.14 1691
719 Develop ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 file hooni 2015.01.01 1726
718 Develop [ios] Requesting Location Permissions in iOS file hooni 2018.08.18 1728
717 Develop [ios] Locale Identifiers file hooni 2018.11.29 1733
716 Develop [ios] 동영상 플레이어 샘플 (for Remote Url) file hooni 2017.02.07 1743
715 Develop [ios] How To Use UIScrollView to Scroll and Zoom Content (Using Objective-C) file hooni 2016.03.23 1753
714 Develop [ios] Pod 특정 버전 설치하고 사용하기 hooni 2022.05.28 1759
Board Pagination Prev 1 ... 6 7 8 9 10 ... 53 Next
/ 53