如果我有 [5,9,4,2,8,12] 的 ArrayList,我怎樣才能得到輸出為 [2,5,9,4,8??,12]。我可以找到最小值,但無法獲得上述輸出。
public static ArrayList<Integer> minToFront(ArrayList<Integer> list) {
int min = Integer.MAX_VALUE;
int first = list.get(0);
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i) < min) {
min = list.get(i);
}
list.set(0, min);
}
return list;
}
uj5u.com熱心網友回復:
看來您想對 ArrayList 進行排序。盡管有更有效的方法可以做到這一點,但讓我們從修復您的方法開始,minToFront().
使用類似的方法,我們可以將minand minInd(最小索引)的“默認”值存盤為串列中的第一個值:
int min = list.get(0);
int minInd = 0;
接下來,我們可以遍歷我們的串列并找到最小元素。我們通過找到小于 的元素來做到這一點min,如果我們找到一個更小的元素,那么我們重新定義 和 的min值minInd:
for (int i = 0; i < list.size(); i ) {
if (list.get(i) < min) {
minInd = i;
min = list.get(i);
}
}
現在我們知道串列的最小元素是什么,我們需要將該值與我們的第一個元素交換。我們通過創建一個臨時變數來存盤我們的第一個元素,然后交換:
int temp = list.set(0, min);
list.set(minInd,temp);
return list;
在我們的 main 方法中,我們可以通過首先定義另一個串列來存盤我們的排序串列來對整個串列進行排序。
雖然我們的舊串列仍然有元素,但我們可以在舊串列中找到最小元素,將其移動到新串列中,將其從舊串列中洗掉,然后重復此程序,直到將所有元素移動到新串列中:
while(origList.size() > 0){
origList = minToFront(origList);
sortedList.add(origList.get(0));
origList.remove(0);
}
應用所有這些更改后,我們的代碼應如下所示:
import java.util.*;
class Main {
public static void main(String[] args) {
ArrayList<Integer> sortedList = new ArrayList<Integer>();
ArrayList<Integer> origList = new ArrayList<Integer>();
origList.add(5);
origList.add(9);
origList.add(4);
origList.add(2);
origList.add(8);
origList.add(12);
while(origList.size() > 0){
origList = minToFront(origList);
sortedList.add(origList.get(0));
origList.remove(0);
}
System.out.println(sortedList);
}
public static ArrayList<Integer> minToFront(ArrayList<Integer> list) {
int min = list.get(0);
int minInd = 0;
for (int i = 0; i < list.size(); i ) {
if (list.get(i) < min) {
minInd = i;
min = list.get(i);
}
}
int temp = list.get(0);
list.set(0, min);
list.set(minInd,temp);
return list;
}
}
輸出:
[2, 4, 5, 8, 9, 12]
我希望這回答了你的問題!如果您需要任何進一步的說明或詳細資訊,請告訴我:)
uj5u.com熱心網友回復:
public class Main {
public static void main(String[] args) {
int [] arr = new int [] {5,9,4,2,8,12};
int[] arr2 = new int[arr.length];
int index = 0;
for(int i=1;i<arr.length;i )
{
if(arr[i]<arr[i-1])
{
index=i;
}
}
arr2[0]=arr[index];
int counter=1;
for(int i=0;i<arr.length;i )
{
if(index!=i)
{
arr2[counter ]=arr[i];
}
}
System.out.println();
for (int i = 0; i < arr2.length; i ) {
System.out.print(arr2[i] " ");
}
}
}
uj5u.com熱心網友回復:
int minIndex = -1;
int tmp = array[0];
int min = 0;
for (int i = 0; i < array.length; i ) {
if (array[i] < min) {
minIndex = i;
min = array[i];
}
}
array[0] = min;
array[minIndex] = tmp;
return array;
}```
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436057.html
