本题要求实现一个用选择法对整数数组进行简单排序的函数。
函数接口定义:
void sort( int a[], int n );
其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
void sort( int a[], int n );
int main()
{
int i, n;
int a[MAXN];
scanf("%d", &n);
for( i=0; i<n; i++ )
scanf("%d", &a[i]);
sort(a, n);
printf("After sorted the array is:");
for( i = 0; i < n; i++ )
printf(" %d", a[i]);
printf("\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
4
5 1 7 6
输出样例:
After sorted the array is: 1 5 6 7
代码示例:(采用简单选择排序,进行n-1趟排序,每趟排序找出数列中最小的数并将其插入第i趟的位置)
void sort( int a[], int n )
{
int b[100];
for(int k=0;k<n;k++)
b[k] = a[k];
int min,temp,j;
for(int i =0;i<n;i++)
{
min = i;//记录最小值的位置;
j = i + 1;//从i+1的位置开始遍历整个数组;
for(;j<n;j++)
{
if(b[j]<b[i])//如果j的值小于i的值,将i与j互换;
{
min = j;
if(min!=i)
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
}//简单选择排序主体框架,时间复杂度O(n^2);
for(int k=0;k<n;k++)
a[k] = b[k];
}
本文详细介绍了使用简单选择排序算法对整数数组进行排序的方法。通过实现一个排序函数,将数组中的元素按升序排列,并提供了完整的代码示例。该算法的时间复杂度为O(n^2),适用于小规模数据的排序。

909

被折叠的 条评论
为什么被折叠?



