编写一个函数,实现选择法(找最值交换)从大到小排序。主函数中初始化一个一维数组(元素个数小于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",所有数据输出后回车
#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]);
}