我的问题是不可以排序呀,谁可以帮忙看看问题,谢谢了
public class method {
public static void rank(int n) {
int i, num;
int a[] = new int[n];
Random rd = new Random(); for (i = 0; i < n; i++)
a[i] = rd.nextInt(1000);
for (i = 1; i < n; i++) {
num = a[i];
while(num < a[i - 1])
{
a[i] = a[i - 1];
break;
}
a[i] = num;
}
System.out.println("排序后数组为:");
for (i = 0; i < n; i++)
System.out.println(a[i]);
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("输入随机数的个数");
String str = sc.next();
int n = Integer.parseInt(str);
rank(n);
}}

解决方案 »

  1.   

    for (i = 1; i < n; i++) {
    num = a[i]; 
    while(num < a[i - 1])
    {
    a[i] = a[i - 1];
    break;
    }
    a[i] = num;
    }把上面的换成这个       // 插入排序   
            int temp;  
           /* 每拿到一个元素,都要将这个元素与所有它之前的元素遍历比较一遍, 
            * 让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置 
            * */  
           for(int i=1; i<a.length; i++) {  
               for(int j=i; (j>0) && (a[j] > a[j-1]); j--) {//a[j] > a[j-1]为降序排列   
                   temp = a[j];  
                   a[j] = a[j-1];  
                   a[j-1] = temp;  
               }  
           } 你需要了解一下插入排序的原理
      

  2.   

    public class method {
    public static void rank(int n) {
    int a[] = new int[n];
    Random rd = new Random(); for (int i = 0; i < n; i++) {
    a[i] = rd.nextInt(1000);
    } int temp = 0;// 中间变量
    int min = 0;// 最小值
    int minIndex = 0;// 最小值下标
    for (int i = 0; i < a.length; i++) {
    min = a[i];
    minIndex = i;
    for (int j = i + 1; j < a.length; j++) {
    if (a[j] < min) {
    min = a[j];
    minIndex = j;
    } }
    temp = a[i];
    a[i] = a[minIndex];
    a[minIndex] = temp;
    } System.out.println("排序后数组为:");
    for (int i = 0; i < n; i++)
    System.out.print(a[i] + "\t");
    } public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("输入随机数的个数");
    String str = sc.next();
    int n = Integer.parseInt(str);
    rank(n);
    }}
      

  3.   


    //这里的循环有问题
    for (i = 1; i < n; i++) {
    num = a[i]; 
    while(num < a[i - 1])
    {
    a[i] = a[i - 1];
    break;
    }
    a[i] = num;
    }
    //改为
    for (i = 1; i < n; i++) {
    num = a[i]; 
    j=i-1;
    while(num < a[j]&&j>=0)
    {
    a[j+1]=a[j];
    j--;
    }
    a[j+1] = num;
    }