在java中按升序排序多个整数

时间:2014-11-03 21:21:04

标签: java sorting

所以我在过去的6个小时里一直绞尽脑汁试图完成这项任务,而我却无处可去。我有一堆整数,我想按升序排序以进行类赋值。但是,我不能使用任何花哨的东西,IE .sort或任何我需要重要的东西到Java。我能够提出的唯一选择是使用if语句并列出8个数字的每个可能组合;但这似乎过分了,必须有更好的方法。

这是我正在处理的代码部分。我基本上想按升序排序d1-d8。我也尝试了阵列,但无济于事。

另一方面,我确定我的代码需要更长的时间,但我在这方面很新,我真的不想重新格式化。

        else if (a1 >= 1){
          int a21 = 0;
          int a31 = 0;
          int a41 = 0;
          int a51 = 0;
          int a61 = 0;
          int a71 = 0;
          int a81 = 0;
          int a91 = 0;
          int d1 = 0;
          int d2 = 0;
          int d3 = 0;
          int d4 = 0;
          int d5 = 0;
          int d6 = 0;
          int d7 = 0;
          int d8 = 0;
          if ((a2 % a1) == (a2 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a3 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a4 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a5 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a6 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a7 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a8 % a1)) a21 = a21 + 1; 
          if ((a2 % a1) == (a9 % a1)) a21 = a21 + 1; 
          if ((a3 % a1) == (a2 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a3 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a4 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a5 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a6 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a7 % a1)) a31 = a31 + 1;
          if ((a3 % a1) == (a8 % a1)) a31 = a31 + 1; 
          if ((a3 % a1) == (a9 % a1)) a31 = a31 + 1; 
          if ((a4 % a1) == (a2 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a3 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a4 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a5 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a6 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a7 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a8 % a1)) a41 = a41 + 1; 
          if ((a4 % a1) == (a9 % a1)) a41 = a41 + 1; 
          if ((a5 % a1) == (a2 % a1)) a51 = a51 + 1; 
          if ((a5 % a1) == (a3 % a1)) a51 = a51 + 1; 
          if ((a5 % a1) == (a4 % a1)) a51 = a51 + 1; 
          if ((a5 % a1) == (a5 % a1)) a51 = a51 + 1; 
          if ((a5 % a1) == (a6 % a1)) a51 = a51 + 1; 
          if ((a5 % a1) == (a7 % a1)) a51 = a51 + 1;
          if ((a5 % a1) == (a8 % a1)) a51 = a51 + 1;
          if ((a5 % a1) == (a9 % a1)) a51 = a51 + 1;
          if ((a6 % a1) == (a2 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a3 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a4 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a5 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a6 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a7 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a8 % a1)) a61 = a61 + 1; 
          if ((a6 % a1) == (a9 % a1)) a61 = a61 + 1; 
          if ((a7 % a1) == (a2 % a1)) a71 = a71 + 1; 
          if ((a7 % a1) == (a3 % a1)) a71 = a71 + 1; 
          if ((a7 % a1) == (a4 % a1)) a71 = a71 + 1; 
          if ((a7 % a1) == (a5 % a1)) a71 = a71 + 1; 
          if ((a7 % a1) == (a6 % a1)) a71 = a71 + 1; 
          if ((a7 % a1) == (a7 % a1)) a71 = a71 + 1;
          if ((a7 % a1) == (a8 % a1)) a71 = a71 + 1;
          if ((a7 % a1) == (a9 % a1)) a71 = a71 + 1;
          if ((a8 % a1) == (a2 % a1)) a81 = a81 + 1; 
          if ((a8 % a1) == (a3 % a1)) a81 = a81 + 1; 
          if ((a8 % a1) == (a4 % a1)) a81 = a81 + 1; 
          if ((a8 % a1) == (a5 % a1)) a81 = a81 + 1; 
          if ((a8 % a1) == (a6 % a1)) a81 = a81 + 1; 
          if ((a8 % a1) == (a7 % a1)) a81 = a81 + 1;
          if ((a8 % a1) == (a8 % a1)) a81 = a81 + 1;
          if ((a8 % a1) == (a9 % a1)) a81 = a81 + 1;
          if ((a9 % a1) == (a2 % a1)) a91 = a91 + 1; 
          if ((a9 % a1) == (a3 % a1)) a91 = a91 + 1; 
          if ((a9 % a1) == (a4 % a1)) a91 = a91 + 1; 
          if ((a9 % a1) == (a5 % a1)) a91 = a91 + 1; 
          if ((a9 % a1) == (a6 % a1)) a91 = a91 + 1; 
          if ((a9 % a1) == (a7 % a1)) a91 = a91 + 1;
          if ((a9 % a1) == (a8 % a1)) a91 = a91 + 1;
          if ((a9 % a1) == (a9 % a1)) a91 = a91 + 1;
          if (a2 <= 0) d1 = (((a2 % a1) + a1) % a1);
          else d1 = (a2 % a1);
          if (a3 <= 0) d2 = (((a3 % a1) + a1) % a1); 
          else d2 = (a3 % a1);
          if (a4 <= 0) d3 = (((a4 % a1) + a1) % a1); 
          else d3 = (a4 % a1);
          if (a5 <= 0) d4 = (((a5 % a1) + a1) % a1); 
          else d4 = (a5 % a1);
          if (a6 <= 0) d5 = (((a6 % a1) + a1) % a1); 
          else d5 = (a6 % a1);
          if (a7 <= 0) d6 = (((a7 % a1) + a1) % a1); 
          else d6 = (a7 % a1);
          if (a8 <= 0) d7 = (((a8 % a1) + a1) % a1);
          else d7 = (a8 % a1);
          if (a9 <= 0) d8 = (((a9 % a1) + a1) % a1);
          else d8 = (a9 % a1);
          System.out.println(d1 + ": " + a21); 
          if((a2 % a1)!= (a3 % a1)){ System.out.println(d2 + ": "+ a31);}
          if((a2 % a1)!= (a4 % a1)){ if((a3 % a1)!= (a4 % a1)){ System.out.println(d3 + ": " + a41);}}
          if((a2 % a1)!= (a5 % a1)){ if((a3 % a1)!= (a5 % a1)){ if((a4 % a1)!= (a5 % a1)){ System.out.println(d4 + ": " + a51);}}}
          if((a2 % a1)!= (a6 % a1)){ if((a3 % a1)!= (a6 % a1)){ if((a4 % a1)!= (a6 % a1)){ if ((a5 % a1)!= (a6 % a1)){ System.out.println(d5 + ": "+ a61);}}}}
          if((a2 % a1)!= (a7 % a1)){ if((a3 % a1)!= (a7 % a1)){ if((a4 % a1)!= (a7 % a1)){ if ((a5 % a1)!= (a7 % a1)){if ((a6 % a1)!= (a7 % a1)){  System.out.println(d6 + ": " + a71);}}}}}
          if((a2 % a1)!= (a8 % a1)){ if((a3 % a1)!= (a8 % a1)){ if((a4 % a1)!= (a8 % a1)){ if ((a5 % a1)!= (a8 % a1)){if ((a6 % a1)!= (a8 % a1)){if((a7 % a1)!= (a8 % a1))  System.out.println(d7 + ": " + a81);}}}}}
          if((a2 % a1)!= (a9 % a1)){ if((a3 % a1)!= (a9 % a1)){ if((a4 % a1)!= (a9 % a1)){ if ((a5 % a1)!= (a9 % a1)){if ((a6 % a1)!= (a9 % a1)){if((a7 % a1)!= (a9 % a1))if((a8 % a1)!= (a9 % a1)){ System.out.println(d8 + ": " + a91);}}}}}}
        }

5 个答案:

答案 0 :(得分:2)

冒泡排序,世界上最愚蠢的排序:

public static void sort(int[] items) {
    for (int i = 0; i < items.length - 1; ++i) {
        for (int j = i + 1; j < items.length; ++j) {
            if (items[i] > items[j]) {
                int temp = items[i];
                items[i] = items[j];
                items[j] = temp;
            }
        }
    }
}

将您的值放在数组中:

int[] items = new int[] { d1, d2, d3, ... };

并打电话给它:

sort(items);

此后,items的内容将按升序排序。

答案 1 :(得分:1)

请,不。

查找算法书并编写一个简单的排序方法,该方法接受一个数组并对其进行排序。即使是冒泡排序也会比你发布的更好。

答案 2 :(得分:0)

如何将所有内容放入数组并调用sort()。

int[] arr = {10,1,30};
Arrays.sort(arr);

如果您想自己编写排序逻辑,请查看任何排序算法(合并排序,快速排序,插入排序等)。

答案 3 :(得分:0)

一种方法,而不是最有效的方法是取第一个数字,并将其与列表中的每个数字进行比较。

如果您找不到更大的数字,请将其放入数组中,然后使用列表中的下一个数字重新开始。 否则,如果您发现的数字大于您的号码,您可以使用该号码,从列表的正面开始寻找比它大的数字。

在比较每个数字之前,请执行此操作。

值得研究排序,因为它是一个广泛的研究领域,有许多不同的排序技术,从冒泡排序到快速排序。

答案 4 :(得分:0)

您可以进行合并排序。这很容易。

import java.util.*;

public class MergeSort
{
public static void main(String[] args)
{
    Integer[] a = {2, 6, 3, 5, 1};
    mergeSort(a);
    System.out.println(Arrays.toString(a));
}

public static void mergeSort(Comparable [ ] a)
{
    Comparable[] tmp = new Comparable[a.length];
    mergeSort(a, tmp,  0,  a.length - 1);
}


private static void mergeSort(Comparable [ ] a, Comparable [ ] tmp, int left, int right)
{
    if( left < right )
    {
        int center = (left + right) / 2;
        mergeSort(a, tmp, left, center);
        mergeSort(a, tmp, center + 1, right);
        merge(a, tmp, left, center + 1, right);
    }
}


private static void merge(Comparable[ ] a, Comparable[ ] tmp, int left, int right, int rightEnd )
{
    int leftEnd = right - 1;
    int k = left;
    int num = rightEnd - left + 1;

    while(left <= leftEnd && right <= rightEnd)
        if(a[left].compareTo(a[right]) <= 0)
            tmp[k++] = a[left++];
        else
            tmp[k++] = a[right++];

    while(left <= leftEnd)    // Copy rest of first half
        tmp[k++] = a[left++];

    while(right <= rightEnd)  // Copy rest of right half
        tmp[k++] = a[right++];

    // Copy tmp back
    for(int i = 0; i < num; i++, rightEnd--)
        a[rightEnd] = tmp[rightEnd];
}
}

完全披露

https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/code/MergeSort.java