C语言,数组问题,从10个数中找到最小的插在第一个前面。

来源:百度知道 编辑:UC知道 时间:2024/05/28 05:04:47
我的思路如下:
1、先找到最小的,用min标记它。
2、把最小的a[i]赋值给temp。
3、将a[0]变成a[1],依次后移一位。
4、把temp赋值给a[0],再按顺序输出。

如何编译?
谢谢。尤其后两步,不会。

首先,我可能没有十分明白这个程序的目的是干什么,我根据你的描述理解就是要找到一个数组里面最小的元素,然后仅仅把它放在第一个位置,然后就这样输出,不是把整个数组按照由小到大的顺序排列的。

还有你的第三个要求,数组依次后移,也不能够移到数组的末尾,因为那样最后一个元素将被移出数组,所以我的理解是移到最小的那个元素就结束。
下面是这个程序:

#include <stdio.h>
//该函数实现你所说的功能,找到最小的元素,放在第一个位置
void Sort(int* arr,long len)
{
int* a = arr;
int temp = 0;
int min = 0;
int i = 0;
for (i = 1;i<len; ++i)
{
if (a[min] > a[i])
{
min = i;//第一个功能:先找到最小的,
//用min 标记它
}
}
temp = a[min];//第二个功能:把最小的a[i]赋值给temp
for (i = min; i>0;--i)//第三个功能:将a[0]变成a[1],
//依次后移一位,到最小元素位置结束
{
a[i] =a[i - 1];
}
a[0] = temp;//第四个功能:把temp赋值给a[0],再按顺序输出。
for (i=0;i<len;++i)
{
printf("%d",a[i]);
}

}
void main()
{
int i = 0;
int a[]={1,3,4,2,5,8};
Sort(a,6);
}

int ma