使用冒泡排序排序 ArrayList<BigDecimal>
Ordering an ArrayList<BigDecimal> with bubble sort
我正在尝试订购一个包含从最大到最小的 BigDecimal 货币值的 Arraylist。
那是我的代码:
public void bubble_sort(ArrayList<String> nameArray, ArrayList<BigDecimal> priceArray){
for (int i = 0; i < priceArray.size(); i++){
for (int j = 0; j < priceArray.size() - 1; j++){
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
int temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
}
}
Log.v("Ordering array", priceArray.toString());
}
但是顺序还是和原来的数组一样。
我该怎么办?
您比较的是指数而不是值。
改变这个
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
int temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
至
if (priceArray.get(j).compareTo(priceArray.get(j+1) > 0){
BigDecimal temp = priceArray.get(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, temp);
}
首先,字符串数组nameArray是用来做什么的?在您的代码中没有注意到它。如果我理解得很好,我想你想要这样的东西:
public void bubble_sort(ArrayList<String> nameArray, ArrayList<BigDecimal> priceArray){
boolean swap=true;
double temp=0;
while (swap){
swap=false;
for (int i = 0; i < priceArray.size()-1; i++){
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
swap=true
}
}
}
Log.v("Ordering array", priceArray.toString());
}
}
我正在尝试订购一个包含从最大到最小的 BigDecimal 货币值的 Arraylist。 那是我的代码:
public void bubble_sort(ArrayList<String> nameArray, ArrayList<BigDecimal> priceArray){
for (int i = 0; i < priceArray.size(); i++){
for (int j = 0; j < priceArray.size() - 1; j++){
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
int temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
}
}
Log.v("Ordering array", priceArray.toString());
}
但是顺序还是和原来的数组一样。 我该怎么办?
您比较的是指数而不是值。
改变这个
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
int temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
至
if (priceArray.get(j).compareTo(priceArray.get(j+1) > 0){
BigDecimal temp = priceArray.get(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, temp);
}
首先,字符串数组nameArray是用来做什么的?在您的代码中没有注意到它。如果我理解得很好,我想你想要这样的东西:
public void bubble_sort(ArrayList<String> nameArray, ArrayList<BigDecimal> priceArray){
boolean swap=true;
double temp=0;
while (swap){
swap=false;
for (int i = 0; i < priceArray.size()-1; i++){
if (priceArray.indexOf(j) > priceArray.indexOf(j+1)){
temp = priceArray.indexOf(j);
priceArray.set(j, priceArray.get(j+1));
priceArray.set(j+1, BigDecimal.valueOf(temp));
}
swap=true
}
}
}
Log.v("Ordering array", priceArray.toString());
}
}