[英]Weird behavior with Dart List
List<List<int>> arr = [];
List<int> bubbleSort(List<int> list) {
for (int i = 0; i < list.length; i++) {
for (int j = 0; j < list.length - 1; j++) {
if (list[j] > list[j + 1]) {
int num = list[j];
list[j] = list[j + 1];
list[j + 1] = num;
arr.add(list);
}
}
}
return list;
}
void main(){
bubbleSort([5, 4, 3, 2, 1]);
print(arr);
}
我在 dart 中實現了冒泡排序,每次交換后我都將列表添加到 arr 但我得到了一個意外的輸出:
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [ 1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
不知何故, arr的所有內容都是相同的。 請解釋如何解決這個問題以及為什么會發生這種情況。
void swap(List<int> arr, int xp, int yp) {
var temp = arr[xp];
arr[xp] = arr[yp];
arr[yp] = temp;
}
List<int> applyBubbleSort(List<int> arr) {
var n = arr.length;
for (var i = 0; i < n; i++) {
for (var j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) swap(arr, j, j+1);
}
}
return arr;
}
void main(List<String> args) {
var result = applyBubbleSort(
// [5, 3, 1, 9, 8, 2, 4, 7]
[5, 4, 3, 2, 1]
);
print(result);
}
輸出:
[1, 2, 3, 4, 5]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.