몽상실현개발주의

[따배씨] 14.25 qsort() 함수 포인터 연습문제 본문

Language/C

[따배씨] 14.25 qsort() 함수 포인터 연습문제

migrationArc 2021. 7. 14. 23:51

[따배씨] 14.25 qsort() 함수 포인터 연습문제

따배씨 - 따라하며 배우는 C언어

14강 구조체_2

14.25 qsort() 함수 포인터 연습문제

#include <stdio.h>
#include <stdlib.h>

int compare(const void* first, const void* second){
    // void type pointer 는 어떤 타입이든 가리킬 수 있다
    
    if (*(int*)first > *(int*)second)
        return 1;
    else if (*(int*)first < *(int*)second)
        return -1;
    else
        return 0;
}

int main(){
    int arr[] = {8, 2, 5, 3, 6, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    qsort(arr, n, sizeof(int), compare);
    
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    

    return 0;
}
  • quick sort 예제

 

 

#include <stdio.h>
#include <stdlib.h>

struct kid
{
    char name[100];
    int height;
};

int compare(const void* first, const void* second)
{
    if (((struct kid*)first)->height > ((struct kid*)second)->height)
        return  1;
    else if (((struct kid*)first)->height < ((struct kid*)second)->height)
        return -1;
    else
        return 0;
}

int main()
{
    struct kid my_friends[] = {
        "Jack Jack", 40, "Geenie", 300, "Aladin", 170, "Piona", 150
    };
    
    const int n = sizeof(my_friends) / sizeof(struct kid);
    
    qsort(my_friends, n, sizeof(struct kid), compare);
    
    for (int i = 0; i < n; i++)
    {
        printf("%s  \t%d\n", my_friends[i].name, my_friends[i].height);
    }
    
    return 0;
}
int compare(const void* first, const void* second)
{
    if (((struct kid*)first)->height > ((struct kid*)second)->height)
        return  1;
    else if (((struct kid*)first)->height < ((struct kid*)second)->height)
        return -1;
    else
        return 0;
}
  • 함수의 입력을 pointer 로 받아서 structure 의 내부 조건으로 정렬

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments