各位前辈,你们好,我是刚开始自学java,在插入排序的时候下面的这个程序运行不了,请各位大神帮忙帮忙看看

396084372 发布于 2016/04/10 11:42
阅读 239
收藏 0

//按升序排列数组,
public class charu{
 public static void main(String args[]){
  int []a=new int [5];
  a[0]=3; 
  a[1]=4;
  a[2]=1;
  a[3]=5;
  a[4]=2;
  //插入法排序
  int temp;
  for(int i=1;i<a.length;i++){// i=1开始,因为第一个元素认为是已经排好了顺序的
   for (int j=i;(j>0)&&(a[j]<a[j-1]);j--){
   //交换
   temp=a[j];
   a[j]=a[j-1];
   a[j-1]=temp;

   }
   System.out.println(a[temp]);
  }


 }

}

加载中
0
zhoushengfan1994
zhoushengfan1994
System.out.println(a[temp]);temp保存的是一个值,怎么能吧它变成一个下标呢
0
李巨侠
int temp;修改成int temp = 0;
0
3
396084372
int temp;修改成int temp = 0后打印出来的只是a[temp]这一个下标代表的值,我想让打印出来的值是我排序后的顺序,有没有办法???

 

0
SVD
SVD
public static void main(String args[]) {
int[] a = new int[5];
a[0] = 3;
a[1] = 4;
a[2] = 1;
a[3] = 5;
a[4] = 2;
// 插入法排序
int temp=0;
for (int i = 1; i < a.length; i++) 
{// i=1开始,因为第一个元素认为是已经排好了顺序的,升序排列
for (int j = i; (j > 0) && (a[j] < a[j - 1]); j--) {
// 交换
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;


}
//System.out.println(a[temp]);
}
for (int k=0;k < a.length; k++)
{
System.out.println(a[k]);
}


}
0
阿信sxq
阿信sxq

你试一试这个

public static void main(String[] args) {
        int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17,
                18, 23, 34, 15, 35, 25, 53, 51 };
        int temp = 0;
        for (int i = 1; i < a.length; i++) {
            int j = i - 1;
            temp = a[i];
            for (; j >= 0 && temp < a[j]; j--) {
                a[j + 1] = a[j];//将大于temp的值整体后移一个单位  
            }
            a[j + 1] = temp;
        }

        System.out.println(Arrays.toString(a));

    }



返回顶部
顶部