有一个数组.内放10个整数,要求找出最小的数和它的下标,然后和数组中最前面的元素对换.
来源:百度知道 编辑:UC知道 时间:2024/05/09 10:28:51
并对程序的句子进行解释
//有可能最小的数有好几个
import java.util.Arrays;
public class LookForMin {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] x={-1,45,58,51,-1,4,9,1,0,9};//定义的一个数组
int[] y=new int[x.length ];//定义一个备用数组
System.arraycopy( x,0,y,0,x.length );//将数组x里的所有元素放在数组y里。
Arrays.sort(y);//将数组y排序。那数组里最小的就在第0位置上了。
int j=0;//记录最小的数字总共出现的次数。
int k=0;//记录最小的数字最初出现的位置。
for(int i=0;i<x.length ;i++)
{
if(x[i]==y[0])
{
//如果数组x中第一个数字为最小的,那么k=0,下次再进入判断的时候k还为0,但就不是第一次出现的位置了,所以发现初始位置时要给k定义一个特殊的值。
if(k==0 && i==0)//如果k=0,i==0那说明第一个数字是最小的,为了做个标志,不被以后的操作改变,将其值定为-1,来代表0.
{
k=-1;
}
else if(k==0 && i!=0)// 如果k==0,i!=0那说明第i个数字是最小的。k=i ,那k就是最小值的位置了。
{
k=i;
}
j++;
}
}
if(k==-1)//k若为-1,那么它肯定是因为
{
k=0;
}
/*