【问题标题】:sorting integers in order lowest to highest java按从低到高的顺序对整数进行排序 java
【发布时间】:2011-12-08 22:05:53
【问题描述】:

这些数字存储在同一个整数变量中。我将如何按从低到高的顺序对整数进行排序?

11367
11358
11421
11530
11491
11218
11789

【问题讨论】:

  • 将来,您可能会发现指定对您施加的任何约束更有用。例如,您是否可以使用提供的 Java 排序方法,或者您是否打算实现自己的方法。这将帮助您以更少的努力获得更合适的答案:)
  • These numbers are stored in the same integer variable - 我希望 Java intInteger 在任何给定时间点都只有一个值:如果您想要排序值,请使用 Collection数组.

标签: java algorithm sorting integer


【解决方案1】:
import java.util.Arrays;

public class sortNumber {

public static void main(String[] args) {
    // Our array contains 13 elements 
    int[] array = {9,  238,  248,  138,  118,  45,  180,  212,  103,  230,  104,  41,  49}; 

    Arrays.sort(array); 

    System.out.printf(" The result : %s", Arrays.toString(array)); 
  }
}

【讨论】:

    【解决方案2】:

    有两种选择,真的:

    1. 使用标准集合,as explained by Shakedown
    2. 使用Arrays.sort

    例如,

    int[] ints = {11367, 11358, 11421, 11530, 11491, 11218, 11789};
    Arrays.sort(ints);
    System.out.println(Arrays.asList(ints));
    

    这当然假设您已经将整数作为数组。 如果您需要先解析这些,请查找 String.splitInteger.parseInt

    【讨论】:

    • 仅供参考 - Oracle 链接不起作用。它们要么坏了,要么需要 Oracle 帐户才能查看,我不知道是哪个。
    • 他们似乎已经退休了 1.4.2... 会更新,谢谢。
    【解决方案3】:

    从用户和插入排序中获取输入。以下是它的工作原理:

    package com.learning.constructor;
    
    import java.util.Scanner;
    
    
    
    public class InsertionSortArray {
    
    public static void main(String[] args) {    
    
    Scanner s=new Scanner(System.in);
    
    System.out.println("enter number of elements");
    
    int n=s.nextInt();
    
    
    int arr[]=new int[n];
    
    System.out.println("enter elements");
    
    for(int i=0;i<n;i++){//for reading array
        arr[i]=s.nextInt();
    
    }
    
    System.out.print("Your Array Is: ");
    //for(int i: arr){ //for printing array
    for (int i = 0; i < arr.length; i++){
        System.out.print(arr[i] + ",");
    
    }
    System.out.println("\n");        
    
        int[] input = arr;
        insertionSort(input);
    }
    
    private static void printNumbers(int[] input) {
    
        for (int i = 0; i < input.length; i++) {
            System.out.print(input[i] + ", ");
        }
        System.out.println("\n");
    }
    
    public static void insertionSort(int array[]) {
        int n = array.length;
        for (int j = 1; j < n; j++) {
            int key = array[j];
            int i = j-1;
            while ( (i > -1) && ( array [i] > key ) ) {
                array [i+1] = array [i];
                i--;
            }
            array[i+1] = key;
            printNumbers(array);
        }
    }
    
    }
    

    【讨论】:

      【解决方案4】:

      如果 array.sort 没有你想要的,你可以试试这个:

      package drawFramePackage;
      import java.awt.geom.AffineTransform;
      import java.util.ArrayList;
      import java.util.ListIterator;
      import java.util.Random;
      public class QuicksortAlgorithm {
          ArrayList<AffineTransform> affs;
          ListIterator<AffineTransform> li;
          Integer count, count2;
          /**
           * @param args
           */
          public static void main(String[] args) {
              new QuicksortAlgorithm();
          }
          public QuicksortAlgorithm(){
              count = new Integer(0);
              count2 = new Integer(1);
              affs = new ArrayList<AffineTransform>();
              for (int i = 0; i <= 128; i++){
                  affs.add(new AffineTransform(1, 0, 0, 1, new Random().nextInt(1024), 0));
              }
              affs = arrangeNumbers(affs);
              printNumbers();
          }
          public ArrayList<AffineTransform> arrangeNumbers(ArrayList<AffineTransform> list){
              while (list.size() > 1 && count != list.size() - 1){
                  if (list.get(count2).getTranslateX() > list.get(count).getTranslateX()){
                      list.add(count, list.get(count2));
                      list.remove(count2 + 1);
                  }
                  if (count2 == list.size() - 1){
                      count++;
                      count2 = count + 1;
                  }
                  else{
                  count2++;
                  }
              }
              return list;
          }
          public void printNumbers(){
              li = affs.listIterator();
              while (li.hasNext()){
                  System.out.println(li.next());
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        要对窄范围的整数进行排序,请尝试Counting sort,其复杂度为O(range + n),其中n 是要排序的项目数。如果您想对非离散的东西进行排序,请使用最佳 n*log(n) 算法(quicksortheapsortmergesort)。合并排序也用于其他回复Arrays.sort 已经提到的方法。没有简单的方法来推荐一些算法或函数调用,因为有几十种特殊情况,你会使用某种排序,而不是另一种。

        所以请指定应用程序的确切目的(学习一些东西(从插入排序或冒泡排序开始)、整数的有效性(使用计数排序)、结构的有效性和可重用性(使用 n*log(n ) 算法),或者 zou 只是希望它以某种方式排序 - 使用 Arrays.sort :-))。如果您想对整数的字符串表示形式进行排序,那么您可能会对基数排序感兴趣....

        【讨论】:

          【解决方案6】:

          好吧,如果你想使用算法来做到这一点。那里有大量的排序算法。如果您不太关心效率,而更关心可读性和可理解性。我推荐插入排序。这是psudo代码,把它翻译成java很简单。

          begin
              for i := 1 to length(A)-1 do
              begin
                  value := A[i];
                  j := i - 1;
                  done := false;
                  repeat
                      { To sort in descending order simply reverse
                        the operator i.e. A[j] < value }
                      if A[j] > value then
                      begin
                          A[j + 1] := A[j];
                          j := j - 1;
                          if j < 0 then
                              done := true;
                      end
                      else
                          done := true;
                  until done;
                  A[j + 1] := value;
              end;
          end;
          

          【讨论】:

          【解决方案7】:

          您可以将它们放入一个列表中,然后使用它们的自然顺序对它们进行排序,如下所示:

          final List<Integer> list = Arrays.asList(11367, 11358, 11421, 11530, 11491, 11218, 11789);
          Collections.sort( list );
          // Use the sorted list
          

          如果数字存储在同一个变量中,那么您必须以某种方式将它们放入List,然后调用sort,如下所示:

          final List<Integer> list = new ArrayList<Integer>();
          list.add( myVariable );
          // Change myVariable to another number...
          list.add( myVariable );
          // etc...
          
          Collections.sort( list );
          // Use the sorted list
          

          【讨论】:

          • 是否有不同的数字排序方式。我有人向我推荐 ArrayList,但我们必须使用 for 循环和 if 语句进行排序,因为我还没有学过 ArrayList
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-04
          • 2023-03-28
          • 2013-07-14
          • 2016-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多