c语言基础知识,关于数组的基础知识

有个小学班级有30个人,现在要按身高从矮到高重新排座位,请用简单选择法排序给这些学生按身高从矮到高排序。
(环境为vsc++,最好给出每步循环得出什么)


/* Note:Your choice is C IDE */
#include "stdio.h"
    
int a[]={8,19,2,3,100,99,1000,888,-1,0};
//返回从开始位置找到的最小值的下标
int getMinIndex(int start){
    int index=start;
    int i;
    int min = a[start];
    for(i=start;i<10;i++){
        if(min>a[i]){
            min=a[i];
            index = i;
        }
    }
    return index;
}
//选择排序
void selectionSort(){
    int i;
    for(i=0;i<10;i++){
        int index = getMinIndex(i);
        if(index !=i){
            int tmp = a[i];
            a[i]=a[index];
            a[index]=tmp;
        }
    }
}
void print(){
    int i;
    for(i=0;i<10;i++){
        printf("%d\t",a[i]);
    }
    printf("\n");
}
int main() {
    
    printf("排序前顺序如下:");
    print();
    printf("======================");
    selectionSort();
    print();
}

每一步的操作都打印出来了 ,运行图及代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

代码:

#include <stdio.h>

void print(int a[],int n)
{
    int i;
    for (i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}

int main()
{
    int a[30],i,j,k,t;
    for (i=0;i<30;i++)
    {
        scanf("%d",&a[i]);
    }
    
    for (i=0;i<30;i++)
    {
        k = i; //第i个最小值
        for (j=i;j<30;j++)
        {
            if(a[j]<a[k])
            {
                k = j;
            }
        }
        printf("找到第%d个最矮的人:%d\n",i+1,a[k]);
        if(k != i)
        {
            t = a[i];
            a[i] = a[k];
            a[k] = t;
            printf("交换第%d个人和%d个人的位置,交换后的排序:",i+1,k+1);
            print(a,30);
        }else
            printf("不需要交换\n");
        
    }
    
    printf("排序后的数组:\n");
    print(a,30);

    return 0;
}