本题要求实现一个用选择法对整数数组进行简单排序的函数。
函数接口定义:
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
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/540
提交:
题解:
/*
* 选择排序法
*/
void sort(int a[], int n) {
// n 个数据,选择排序 n-1 次即可得出排序结果
for (int i = 0; i < n - 1; i++) {
// 从剩下的 n-i 个元素中找出最小的元素,把其值赋给 a[i]
for (int j = i + 1; j < n; j++) {
if (a[j] < a[i]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}