在java中按升序交换数组元素

时间:2014-11-08 07:28:33

标签: java arrays

我正在尝试按升序交换数组,但某处我出错了。我正在使用

进行输入
int n = Integer.parse.int(args[0]);

但它不起作用。以下是完整的代码。

package tech;

import java.util.*;
import java.io.*;

public class Techgig {
    public static int ta[]={1,12,5,111,200,1000,10,9,6,7,4};

    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Amount Mark has:");
        int rs=50;//Integer.parseInt(args[0]);
        //int a=0;
        System.out.println(rs);

        // for(int k=0;k<ta.length;k++)
        //System.out.print("\t"+ ta);
        int min,temp;
        for(int i=0;i<ta.length;i++)
        {
            min=i;
            // System.out.print("\t"+ ta[i]);
            for( int j=i+1;j<ta.length;j++)
            {
                if(ta[i]<ta[min])
                {
                    temp=ta[i];
                    ta[i]=ta[min];
                    ta[min]=temp;
                }
                // System.out.print("\t"+ ta[i]);
            }
        }

        for(int k=0;k<ta.length;k++)
        {
            System.out.print("\t"+ ta[k]);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您应该将变量 i 替换为 j

      if(ta[i]<ta[min])
      {
          temp=ta[i];
          ta[i]=ta[min];
          ta[min]=temp;
      }

答案 1 :(得分:0)

原因是你正在将你分配给min变量的索引与其自身进行比较,因此它永远不会进入你的if条件进行交换。

您可以通过使用i和j作为索引并在两者之间进行检查来解决此问题:

for(int i=0;i<ta.length;i++)
{
  // System.out.print("\t"+ ta[i]);
    for( int j=i+1;j<ta.length;j++)
    {
      if(ta[j]<ta[i])
      {
          temp=ta[j];
          ta[j]=ta[i];
          ta[i]=temp;
      }
     // System.out.print("\t"+ ta[i]);
  }
 }

答案 2 :(得分:0)

你的比较逻辑是错误的。 请参阅以下代码。而不是应用这么多的逻辑。为什么不直接调用下面的排序方法呢?

public static int ta[]={1,12,5,111,200,1000,10,9,6,7,4};

    // print all the elements available in array
    for (int number : ta) {
      System.out.println("Number = " + number);
    }
    // sorting array
    Arrays.sort(ta);
System.out.println("The sorted int array is:");
for (int number : ta) {
  System.out.println("Number = " + number);
}