Tôi cần lấy giá trị chỉ mục của giá trị nhỏ nhất trong danh sách mảng của tôi trong Java. Danh sách của tôi chứa một số float, và tôi đang cố gắng nghĩ về một cách mà tôi có thể lấy số chỉ mục của phao nhỏ nhất để tôi có thể sử dụng số chỉ mục đó ở đâu đó trong mã của tôi. Tôi là người mới bắt đầu, vì vậy xin đừng ghét tôi. Cảm ơn!Cách tìm giá trị nhỏ nhất trong ArrayList, cùng với số chỉ mục? (Java)
Trả lời
Bạn có thể sử dụng Collections.min và List.indexOf:
int minIndex = list.indexOf(Collections.min(list));
Nếu bạn muốn đi qua danh sách một lần duy nhất (ở trên có thể đi qua nó hai lần):
public static <T extends Comparable<T>> int findMinIndex(final List<T> xs) {
int minIndex;
if (xs.isEmpty()) {
minIndex = -1;
} else {
final ListIterator<T> itr = xs.listIterator();
T min = itr.next(); // first element as the current minimum
minIndex = itr.previousIndex();
while (itr.hasNext()) {
final T curr = itr.next();
if (curr.compareTo(min) < 0) {
min = curr;
minIndex = itr.previousIndex();
}
}
}
return minIndex;
}
Giải pháp của bạn vẫn thiếu một cái gì đó! Điều gì xảy ra nếu số min xuất hiện nhiều lần? Đó là sau khi tất cả một danh sách. Vì vậy, tôi nghĩ bạn nên trả lại một Danh sách nếu các chỉ số cho giá trị nhỏ nhất –
@AdelBoutros Nếu đó là những gì OP muốn, giải pháp này có thể được lấy làm điểm khởi đầu và được cải thiện. –
@MarimuthuMadasamy Cảm ơn bro..you là người anh hùng .., thạc sĩ mai –
thử điều này:
public int getIndexOfMin(List<Float> data) {
float min = Float.MAX_VALUE;
int index = -1;
for (int i = 0; i < data.size(); i++) {
Float f = data.get(i);
if (Float.compare(f.floatValue(), min) < 0) {
min = f.floatValue();
index = i;
}
}
return index;
}
'Float.compare (f.floatValue(), min) <0' có thể được thay đổi thành' f
@ Dukeling, bạn có nghĩa là f <= min? – BlackJoker
Không, ý tôi là 'f
Điều này sẽ làm điều đó bằng cách sử dụng chức năng tích hợp sẵn.
public static int minIndex (ArrayList<Float> list) {
return list.indexOf (Collections.min(list)); }
Bạn phải đi qua toàn bộ mảng và giữ hai giá trị phụ trợ:
- Giá trị tối thiểu mà bạn tìm (trên đường về phía cuối)
- Chỉ số nơi mà bạn tìm thấy giá trị nhỏ nhất
Giả sử mảng của bạn được gọi là myArray. Ở cuối mã này, minIndex có chỉ mục có giá trị nhỏ nhất.
var min = Number.MAX_VALUE; //the largest number possible in JavaScript
var minIndex = -1;
for (int i=0; i<myArray.length; i++){
if (myArray[i] < min){
min = myArray[i];
minIndex = i;
}
}
Điều này giả định trường hợp xấu nhất: một mảng hoàn toàn ngẫu nhiên. Nó là một thuật toán O (n) hoặc thứ tự n thuật toán, có nghĩa là nếu bạn có các phần tử n trong mảng của mình, thì bạn phải xem tất cả chúng trước khi biết câu trả lời của bạn. Các thuật toán O (n) là những thuật toán tồi tệ nhất vì chúng mất rất nhiều thời gian để giải quyết vấn đề.
Nếu mảng của bạn được sắp xếp hoặc có bất kỳ cấu trúc cụ thể nào khác, thì thuật toán có thể được tối ưu hóa để nhanh hơn. Tuy nhiên, có nói rằng, trừ khi bạn có một mảng khổng lồ của hàng ngàn giá trị thì đừng lo lắng về việc tối ưu hóa vì sự khác biệt giữa thuật toán O (n) và một thuật toán nhanh hơn sẽ không đáng chú ý.
Có một cách dễ dàng hơn để tìm thấy một số nguyên phút trong array list:
int min = array.get(0);
for (int i : array){
min = min < i ? min : i;
}
Và còn về chỉ mục thì sao? – dedek
- 1. Tìm giá trị chỉ mục của số nhỏ nhất trong danh sách?
- 2. Tìm giá trị nhỏ nhất trong số 5 số nguyên?
- 3. cách lấy chỉ mục hoặc số mục cùng với khóa, giá trị trong dict
- 4. Thêm nhiều giá trị trong ArrayList vào một chỉ mục duy nhất
- 5. Tìm giá trị nhỏ nhất trong một cột
- 6. tìm giá trị nhỏ nhất trong một mảng float
- 7. Tìm n giá trị nhỏ nhất trong một mảng
- 8. Chỉ mục trả về của giá trị nhỏ nhất trong một vectơ?
- 9. Cách lấy giá trị bên trong một ArrayList java
- 10. Cách tốt hơn để tìm chỉ mục của mục trong ArrayList?
- 11. Tìm chỉ mục trong một ArrayList có chứa một chuỗi
- 12. Finding giá trị trùng lặp trong ArrayList
- 13. Cách tìm chỉ mục gần nhất với chỉ mục được chỉ định trong Matlab
- 14. Cách tìm mục có giá trị lớn nhất bằng linq?
- 15. Cách tìm chỉ mục của mảng có giá trị lớn nhất
- 16. Chỉ truyền ArrayList làm giá trị và không tham chiếu
- 17. Tìm đối tượng có thành viên dữ liệu với giá trị duy nhất trong Java?
- 18. Cách nhanh nhất và hiệu quả nhất để tìm kiếm cặp khóa-giá trị trong Java?
- 19. Java: Tìm giá trị cao nhất trong một mảng
- 20. MPI Nhận bộ xử lý với giá trị nhỏ nhất
- 21. Java HashMap: Cách lấy khóa và giá trị theo chỉ mục?
- 22. Đặt chỉ mục SQL Server số nhỏ
- 23. Làm cách nào để tìm giá trị trong cột chỉ có các giá trị duy nhất với EclipseLink?
- 24. Cách tìm giá trị duy nhất trong mảng răng cưa
- 25. Java ArrayList thay thế tại chỉ mục cụ thể
- 26. Cách tìm giá trị gần nhất trong bảng tra cứu?
- 27. Chọn giá trị nhỏ nhất thứ hai trong Oracle
- 28. Tìm chỉ mục cuối cùng của Regex bằng Java
- 29. Cách lấy giá trị trên một chỉ mục nhất định, trong danh sách python?
- 30. Tìm giá trị gần nhất và trả lại chỉ số của mảng bằng Python
Tôi nghĩ rằng đã chọn giải pháp là không đầy đủ. nó vẫn còn thiếu cái gì đó! Điều gì xảy ra nếu số min xuất hiện nhiều lần? Đó là sau khi tất cả một danh sách. Vì vậy, tôi nghĩ rằng nó sẽ trả về một danh sách nếu các chỉ số cho giá trị min –