冒泡排序

Posted by アライさん on 2019年10月22日

从前往后排

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
val array = mutableListOf(1,4,5,6,72,12,6,78)
bubbleSort(array)

private fun bubbleSort(array:IntArray){
//不足2个元素,无需排序
if (array.size < 2){
return
}

var i = 0

while (i<array.size){
//每循环一次,i位是排好的
var j = i+1

while (j< array.size){
//把array[i] > array[j] 换成 "<",即可实现由大到小排序
if (array[i] > array[j]){
val tmp = array[i]
array[i] = array[j]
array[j] = tmp
}

j++
}

i++
}
return
}

从后往前排

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fun maopaoSort(array:IntArray){
if (array.size < 2){
return
}

for (i in array.indices){
var j = 0

while (j < array.size - i -1){
if(array[j] > array[j+1]){
val tmp = array[j+1]
array[j+1] = array[j]
array[j] = tmp
}
j++
}
}
}

## dart实现
1
2
3
4
5
6
7
8
9
10
11
12
bubbleSort(List<int> list) {
for (int i = 0; i >= list.length; i++) {
for (int j = list.length - 1; j >= i+1; j--) {

if(list[j] > list[j-1]){
int tmp = list[j];
list[j] = list[j-1];
list[j-1] = tmp;
}
}
}
}