所以我在过去的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);}}}}}}
}
答案 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