C语言实现
输入10个大小不同的整数,将它们从小到大排序后输出,并给出现每个元素在原来序列中的位置。
输入
输入数据有一行,包含10个整数,用空格分开。
输出
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
样例输入
1 2 3 5 4 6 8 9 10 7
样例输出
1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9
代码:
#include <stdio.h>
int main()
{
int arr_num[10],arr_index[10]={1,2,3,4,5,6,7,8,9,10},i,j,temp,temp_index;
for ( i = 0; i < 10; i++)
{
scanf("%d",&arr_num[i]);
}
for ( i = 0; i < 9; i++)
{
for (j = 0; j < 9-i; j++)
{
if (arr_num[j]>arr_num[j+1])
{
temp = arr_num[j];
temp_index = arr_index[j];
arr_num[j] = arr_num[j+1];
arr_index[j] = arr_index[j+1];
arr_num[j+1] = temp;
arr_index[j+1] = temp_index;
}
}
for ( i = 0; i < 10; i++)
{
if (i==9)
{
printf("%d\n",arr_num[i]);
}else
{
printf("%d ",arr_num[i]);
}
}
for ( i = 0; i < 10; i++)
{
if (i==9)
{
printf("%d\n",arr_index[i]);
}else
{
printf("%d ",arr_index[i]);
}
}
}
return 0;
}
使用冒泡排序,我觉得思路正确,但输出结果不对,求指点?非常感谢!!