编辑代码

#include <stdio.h>

void select_sort(int a[],int N);
void selection_sort(int a[],int N);

void selection_sort(int a[],int N){
    for(i = 0;i < N;i++){
        /*
          从a[i]到a[n-1]中找最小元,并将
          其位置赋给MinPosition
          直接搜索的话时间复制度为O(n)
          还有其他两种方法:
            1.最小堆(需要开辟额外的空间)
            2.最大堆
        */
        MinPosition = ScanForMin(a,i,N-1);
        /*
          将未排序部分的最小元换到有序部分的最后位置
        */
        Swap(a[i],a[MinPosition]);
    }
}

void select_sort(int a[],int N){
    int i,j,temp;
    for(i = 0;i < N;i++){
        for(j = i;j < N;j++){
        if(a[i] > a[j+1]){
            temp = a[i];
            a[i] = a[j+1];
            a[j+1] = temp;
        }
     }
    }
    for(i = 0;i < 5;i++){
        printf("%d ",a[i]);
    }
}

int main () {
    int a[5] = {34,51,89,16,20};
    printf("排序前的元素为:\n");
    for(int i = 0;i < 5;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
    printf("排序后的元素为:\n");
    select_sort(a,5);
}