C언어/디딤돌 C언어 예제

[C언어 소스] 선택 정렬 (Selection Sort, 내림 차순)

언제나휴일 2016. 11. 29. 01:24
반응형

[C언어 소스] 선택 정렬 (Selection Sort, 내림 차순)


 Program.c

//디딤돌 C언어 http://ehpub.co.kr

//선택 정렬 (내림차순)

 

//의사 코드(pseudo code)

//함수 SelectionSort : 정수들이 있는 시작 위치 n : 원소 개수)

//반복: n 0보다 클 동안

//    base에서 n 개의 원소 중에 제일 큰 위치를 찾아 max_pos에 대입

//    max_pos base 위치의 원소를 교환

//    n 1 감소, base를 다음 위치로 이동(for문의 후처리 구문) 

 

 

#include <stdio.h>

#include <assert.h>

void Swap(int *a, int *b);//두 수를 바꾸는 함수

int *GetMaxPos(int *base, int n);//최대값 위치 찾는 함수

void SelectionSort(int *base, int n);

 

int main()

{

    int arr[10] = { 1,7,10,5,9,12,3,6,10,7 };   

    int i = 0;

    SelectionSort(arr, 10);

    for (i = 0; i < 9; i++)

    {

        assert(arr[i] >= arr[i + 1]);        

    }

    printf("SelectionSort 함수 테스트 성공\n");

    return 0;

}

void Swap(int *aint *b)

{

    int temp = *a;

    *a = *b;

    *b = temp;

}

int *GetMaxPos(int *baseint n)

{

    int max_index = 0;

    int index = 0;

    for (index = 1; index< n; index++)

    {

        if (base[index] > base[max_index])

        {

            max_index = index;

        }

    }

    return base + max_index;

}

void SelectionSort(int *baseint n)

{

    int *max_pos = 0;

    for (; n>0; n--, base++)

    {

        max_pos = GetMaxPos(basen);

        Swap(max_pos, base);

    }

}


실행 결과

SelectionSort 함수 테스트 성공



본문

[디딤돌 C언어] 61. 함수 만들기 실습 시나리오

[디딤돌 C언어] 62. 도메인 분석

[디딤돌 C언어] 63. 함수명 결정

[디딤돌 C언어] 64. 함수 원형 결정

[디딤돌 C언어] 65. 테스트 코드 작성

[디딤돌 C언어] 66. 구현 (함수 만들기 실습)




반응형