按顺序从最低到最高的java排序整数

这些数字存储在相同的整数变量中。 我如何从最低到最高的顺序排序整数?

  11367
 11358
 11421
 11530
 11491
 11218
 11789 

有两种选择,真的:

  1. 使用标准集合, 如Shakedown所述
  2. 使用Arrays.sort

例如,

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

当然,假设您已将整数作为数组。 如果需要先解析它们,请查找String.split和Integer.parseInt 。

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

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

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

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

好吧,如果你想用算法来做。 那里有很多排序算法。 如果你不太关心效率,更多关注可读性和可理解性。 我推荐插入排序。 这是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 ie 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; 

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

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

如果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 affs; ListIterator 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(); 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 arrangeNumbers(ArrayList 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()); } } } 

从用户输入输入和插入排序。 下面是它的工作原理:

 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 -1) && ( array [i] > key ) ) { array [i+1] = array [i]; i--; } array[i+1] = key; printNumbers(array); } } }