/*public class test
{
public static void main(String[] args) {
int[]it={1,3,9,5,8,3,6,2};
for(int i=0;i<it.length-1;i++)
{
for(int j=i+1;j<it.length;j++)//3 因为你下面的当这个循环每执行一次。那么最小和第二小元素已经分别出现在了
//it.length-1,it.length-2,it.length-3;的角标上了;所以此处为了提高效率可以设定一个
//变量z。让其每一次自减一次。可以减少2步骤中的比较次数;发现变量z的值和i一致;
//所以循环表达示可以写成for(int j=0;j<it.length-x-1;j++)会更有效率;
{
if(it[i]<it[j])//2 当第二个for循环第一次执行到最后的时候。数组中的最小值已经出现在了最后一个位置上了;
{
int temp=it[i];
it[i]=it[j];
it[j]=temp;
}
}
for(int i1=0;i1<it.length;i1++)//1 我猜想你的本意是用些循环来遍历数组吧;
//但你把他定义在了数组的换位操作也就是第一个for循环里面;
//这样的结果就是你每执行一次换位操作都会把换位后的数组打印一遍;
//因此你的输出结果是很多个数组;
System.out.print(it[i1]);
}
}
}
*/
//下面给出完整代码;
public class test
{
public static void main(String[] args)
{
int[]it={1,3,9,5,8,3,6,2};
for(int i=0;i<it.length-1;i++)//-1:当最后一个数字时不用自己和自己比较。优化代码用。不减也可以;
{
for(int j=0;j<it.length-i-1;j++)//-x让第一次的比较的元素不断减少提高运行效率。不减也能实现功能,-1:避免角标越界;
{
if(it[j]<it[j+1])//这就是让相邻两个数相互比较的关键代码代码;
{
int temp=it[j];
it[j]=it[j+1];
it[j+1]=temp;
}
}
}
for(int i1=0;i1<it.length;i1++)
{
System.out.print(it[i1]);
}
}
}
|