데이터 구조 루틴 - 정렬 의 직접 선택 정렬

본 고 는 [데이터 구조 기초 시리즈 (9): 정렬] 에서 6 교시 [정렬 의 직접 선택 정렬] 의 예행 이다.
#include <stdio.h>
#define MaxSize 20
typedef int KeyType;    //       
typedef char InfoType[10];
typedef struct          //    
{
    KeyType key;        //    
    InfoType data;      //     ,   InfoType
} RecType;              //         
void SelectSort(RecType R[],int n)
{
    int i,j,k,l;
    RecType temp;
    for (i=0; i<n-1; i++)           //  i   
    {
        k=i;
        for (j=i+1; j<n; j++)   //      R[i..n-1]  key   R[k]
            if (R[j].key<R[k].key)
                k=j;            //k                 
        if (k!=i)               //  R[i] R[k]
        {
            temp=R[i];
            R[i]=R[k];
            R[k]=temp;
        }
        printf("i=%d: ",i);
        for (l=0; l<n; l++)
            printf("%d ",R[l].key);
        printf("
"
); } } int main() { int i,n=10; RecType R[MaxSize]; KeyType a[]= {9,8,7,6,5,4,3,2,1,0}; for (i=0; i<n; i++) R[i].key=a[i]; printf(" :"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("
"
); SelectSort(R,n); printf(" :"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("
"
); return 0; }

좋은 웹페이지 즐겨찾기