关于#C语言#的问题,如何解决?

编写一个函数,实现选择法(找最值交换)从大到小排序。主函数中初始化一个一维数组(元素个数小于20),并输出排序前和排序后的数组内容。

函数原型:void mySort(int * pData, int nLen); // pData指向需要排序的一维数组,nLen为一维数组元素个数。

程序运行结果示例:

源数据序列是:

34 27 16 0 -5 12 78 9 -9 7 45 6

排序后序列是:

78 45 34 27 16 12 9 7 6 0 -5 -9

排序前输出信息提示:"源数据序列是:\n"

排序前输出格式:"%4d",所有数据输出后回车

排序后输出信息提示:"排序后序列是:\n"

排序后输出格式:"%4d",所有数据输出后回车

img

#include <stdio.h>
#define MAXN 10

void mySort(int * pData, int nLen)
{
    int i,j,t;
    for(i=0;i<nLen;i++)
    {
        for(j=0;j<nLen;j++)
        {
            if(pData[i]>pData[j])
            {
                t=pData[i];
                pData[i]=pData[j];
                pData[j]=t;
            }
        }
    }
 } 

int main()
{
    int i, n;
    int a[100]={34,27,16, 0, -5, 12, 78, 9, -9, 7, 45, 6};
printf("源数据序列是:\n");
for( i = 0; i < 12; i++ )
        printf("%4d", a[i]);
printf("\n");
    mySort(a, 12);
printf("排序后序列是:\n");
    for( i = 0; i < 12; i++ )
        printf("%4d", a[i]);
        printf("\n");
    printf("\n");

    return 0;
}

for(i=0;i<10;i++)
{
k = i;//作为每次⽐较的最左边的第⼀个数
for(j=i+1;j<10;j++)
{
if(a[j]<a[k])//如果J位的数⼩于k位上的数
{
k = j;//则改变最⼩值的索引
}
}
if(k!=i)//两个位置相等不交换,否则交换
{
t=a[k];
a[k] = a[i];
a[i] = t;
}
}
printf("排序后:\n");
for(i=0;i<10;i++){
printf("%d\t",a[i]);
}