반응형
선택 정렬은 정렬되지 않은 전체 자료들을 하나씩 비교해 가며 위치를 교환하여 정렬하는 방식이다.
가장 간단한 정렬방식이지만, 효율성은 그렇게 높지 않다.
그러므로 큰 데이터에서 사용하는 것은 좋지 않다.
아래 코드는 오름차순 정렬과 내림차순 정렬, 그리고 정렬된 데이터를 출력하는 함수로
이루어진 헤더파일과 소스파일입니다.
main문이 없으므로, 참조바랍니다.
Selection_Sort.h
#ifdef _SELECTION_SORT_ #endif _SELECTION_SORT#ifdef _SELECTION_SORT_ #endif _SELECTION_SORT void Ascending_Sort(int data[], int size); //오름차순 정렬 void Descending_Sort(int data[], int size); //내림차순 정렬 void Print_Array(int data[], int size); //배열 출력Selection_Sort.c
#include<stdio.h> #include"Selection_Sort.h" //오름차순 정렬 위한 함수 //입력인자 : 정렬할 data, data의 크기 void Ascending_Sort(int data[], int size) { int i, j; int min; int temp; for(i=0;i<size;i++) { min = i; //최초 데이터를 최소 인덱스로 잡는다. for(j=i+1;j<size;j++) { if(data[j]<data[min]) //반복문으로 바뀌는 인덱스를 통해 데이터 비교 min=j; //데이터가 작으면 그 데이터의 인덱스를 저장 } //데이터간 변경 temp=data[i]; data[i]=data[min]; data[min]=temp; } } void Descending_Sort(int data[], int size) { int i, j; int max; int temp; for(i=0;i<size;i++) { max = i; //최초 데이터를 최소 인덱스로 잡는다. for(j=i+1;j<size;j++) { if(data[j]>data[max]) //반복문으로 바뀌는 인덱스를 통해 데이터 비교 max=j; //데이터가 작으면 그 데이터의 인덱스를 저장 } //데이터간 변경 temp=data[i]; data[i]=data[max]; data[max]=temp; } } void Print_Array(int data[], int size) { int i; for(i=0;i<size;i++) printf("%d \t", data[i]); }
반응형
'ETC > Data Struct | Algorithm' 카테고리의 다른 글
정렬 - 삽입 정렬 (0) | 2012.09.11 |
---|---|
정렬 - 퀵 정렬(Quick Sort) (0) | 2012.09.10 |
정렬 - 버블 정렬 (Bubble_Sort) (0) | 2012.09.10 |
연결리스트 (LinkedList) (0) | 2012.09.09 |
순차 검색 (0) | 2012.09.09 |