武道大会的排名
时间: 1ms 内存:128M
描述:
武道大会终于落幕,赛场上还能站起来的只剩下了10个人编号分别是ABCDEFGHIJ 他们分别赢了12,3,5,1,16,27,18,8,9,4 场,请输出他们的排序后的成绩和编号。
输入:
无
输出:
27 F
18 G
16 E
12 A
9 I
8 H
5 C
4 J
3 B
1 D
示例输入:
示例输出:
27 F
18 G
16 E
12 A
9 I
8 H
5 C
4 J
3 B
1 D
提示:
参考答案(内存最优[916]):
void SelectSort(int arr[10])
{
int i,j,k;
int temp;
//需要进行的排序趟数,总共需要n-1趟
for(i = 1; i <10; i++)
{
//k从0到n-2,最后一个关键值肯定是有序的
k = i-1;
for(j = i; j < 10; j++)
{
if(arr[j] > arr[k])
{
k = j;//记录最小值的下标
}
}//如果数组中紧接有序区的无序区的第一个记录就是无序区中关键字值最小的,则不用交换
if(k != (i-1))
{
temp = arr[i-1];
arr[i-1] = arr[k];
arr[k] = temp;
}
}
}
#include <stdio.h>
int main()
{
void SelectSort(int[]);
int i;
int _array[10] = {12,3,5,1,16,27,18,8,9,4};
SelectSort(_array);
//printf("选择排序后的数组如下:\n");
for(i = 0;i < 10;i++)
{
printf("%d ",_array[i]);
switch(_array[i])
{
case 1:printf("D\n");break;
case 3:printf("B\n");break;
case 4:printf("J\n");break;
case 5:printf("C\n");break;
case 8:printf("H\n");break;
case 9:printf("I\n");break;
case 12:printf("A\n");break;
case 16:printf("E\n");break;
case 18:printf("G\n");break;
case 27:printf("F\n");break;
}
}
printf("\n");
return 0;
}
参考答案(时间最优[0]):
void SelectSort(int arr[10])
{
int i,j,k;
int temp;
//需要进行的排序趟数,总共需要n-1趟
for(i = 1; i <10; i++)
{
//k从0到n-2,最后一个关键值肯定是有序的
k = i-1;
for(j = i; j < 10; j++)
{
if(arr[j] > arr[k])
{
k = j;//记录最小值的下标
}
}//如果数组中紧接有序区的无序区的第一个记录就是无序区中关键字值最小的,则不用交换
if(k != (i-1))
{
temp = arr[i-1];
arr[i-1] = arr[k];
arr[k] = temp;
}
}
}
#include <iostream>
using namespace std;
#define N 10
void SelectSort(int *arr);
int main()
{
int i;
int _array[N] = {12,3,5,1,16,27,18,8,9,4};
SelectSort(_array);
//printf("选择排序后的数组如下:\n");
for(i = 0;i < N;i++)
{
cout<<_array[i]<<" ";
switch(_array[i])
{
case 1:cout<<"D\n";break;
case 3:cout<<"B\n";break;
case 4:cout<<"J\n";break;
case 5:cout<<"C\n";break;
case 8:cout<<"H\n";break;
case 9:cout<<"I\n";break;
case 12:cout<<"A\n";break;
case 16:cout<<"E\n";break;
case 18:cout<<"G\n";break;
case 27:cout<<"F\n";break;
}
}
cout<<"\n";
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。