値が等しい数の順序をmaintainigながらそれらをソートする。並べ替え、文字列から解析されたのBigDecimalのリストIは、様々な形式</p> <p>IがのBigDecimalにこれらの番号を解析してるの番号を表す文字列のリストで読み取らい
その後、番号を元の形式に戻して印刷します。
問題は、現在のコードでは発生していない、等しい数値の順序を維持する必要があることです。
import java.math.BigDecimal;
import java.util.*;
class Solution{
public static void main(String []args){
//Input
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
String []s=new String[n+2];
for(int i=0;i<n;i++){
s[i]=sc.next();
}
sc.close(); for (int i = 0; i < n -1; i++) {
for (int k = (i + 1); k < n; k++) {
if (new BigDecimal(s[i]).compareTo(new BigDecimal(s[k])) < 0) {
String tempValue = s[i];
s[i] = s[k];
s[k] = tempValue;
}
}
}
入力
9
-100
50
0
56.6
90
0.12
.12
02.34
000.000
出力
90
56.6
50
02.34
.12
0.12 (Wrong order here)
0
000.000
-100
予想される出力
90
56.6
50
02.34
0.12
.12
0
000.000
-100
ソリューション
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
String temp="";
if(new BigDecimal(s[j-1]).compareTo(new BigDecimal(s[j])) < 0) {
temp = s[j-1];
s[j-1] = s[j];
s[j] = temp;
}
}
質問を編集する必要があります。まず、BigIntegerではなく、BigDecimalを解析しています。また、* even *ではなく* equal *の項目の順序を維持したいとします。数字について話すとき、「均等」と「均等」は明確に異なる意味を持ちます。最後に、あなたが求めていることは[安定した並べ替え](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/)と呼ばれています。選択したソートは安定したソートではありません。別のアルゴリズムで置き換える必要があります。挿入ソートとバブルソートの両方が安定しており、選択ソートとして簡単にコーディングすることができます。 –