[C언어 소스] qsort 함수 사용 예제 코드
//C언어 표준 라이브러리 함수 사용법 가이드
//void qsort (void* base,size_t n, size_t size, int (*compare)(const void*,const void*)); 정렬 함수
//회원 배열을 번호 순으로 정렬, 이름 순으로 정렬
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
typedef struct{//회원 구조체 정의
int num;
char name[20];
}Member;
typedef int (*compare)(const void*,const void*);//비교 알고리즘 함수 포인터를 compare 이름으로 타입명 정의
int CompareByNum(const void *v1, const void *v2)//회원 번호로 비교 함수
{
const Member *m1 = (const Member *)v1;
const Member *m2 = (const Member *)v2;
return m1->num - m2->num;
}
int CompareByName(const void *v1, const void *v2)//회원 이름으로 비교 함수
{
const Member *m1 = (const Member *)v1;
const Member *m2 = (const Member *)v2;
return strcmp(m1->name,m2->name);
}
void ListMember(Member *base,int n)//회원 전체 목록 출력 함수
{
int i = 0;
for(i=0;i<n;i++)
{
printf("번호:%3d 이름:%s\n",base[i].num,base[i].name);
}
}
int main (void)
{
Member members[4]=
{
{20,"홍길동"},{12,"강감찬"},{3,"을지문덕"},{40,"유관순"}
};
printf("========== 정렬 전============\n");
ListMember(members,4);
qsort(members,4,sizeof(Member),CompareByNum);//번호 순으로 정렬
printf("========== 번호 순============\n");
ListMember(members,4);
qsort(members,4,sizeof(Member),CompareByName);//이름 순으로 정렬
printf("========== 이름 순============\n");
ListMember(members,4);
return 0;
}
출력
========== 정렬 전============
번호: 20 이름:홍길동
번호: 12 이름:강감찬
번호: 3 이름:을지문덕
번호: 40 이름:유관순
========== 번호 순============
번호: 3 이름:을지문덕
번호: 12 이름:강감찬
번호: 20 이름:홍길동
번호: 40 이름:유관순
========== 이름 순============
번호: 12 이름:강감찬
번호: 40 이름:유관순
번호: 3 이름:을지문덕
번호: 20 이름:홍길동
'C언어 > C언어 예제' 카테고리의 다른 글
[C언어 소스] labs 함수 사용 예제 코드 (절대값 구하는 함수) (0) | 2016.05.05 |
---|---|
[C언어 소스] abs 함수 사용 예제 코드 (절대값 구함) (0) | 2016.05.05 |
[C언어 소스] bsearch 함수 예제 코드 (0) | 2016.05.05 |
[C언어 소스] system 함수 사용 예제 (0) | 2016.05.05 |
[C언어 소스] getenv 함수 사용 예제 코드 (환경 변수 값 구함) (0) | 2016.05.05 |