按顺序从最低到最高的java排序整数
这些数字存储在相同的整数变量中。 我如何从最低到最高的顺序排序整数?
11367 11358 11421 11530 11491 11218 11789
有两种选择,真的:
- 使用标准集合, 如Shakedown所述
- 使用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); } } }