Skip to content

Commit 561f92b

Browse files
author
tianqing.liang
committed
Dart 插入排序 优化
1 parent 7e15539 commit 561f92b

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import 'dart:math';
2+
3+
class ArrayGenerator{
4+
5+
static List generateOrderedArray(int n){
6+
List arr = <dynamic>[n];
7+
for(int i = 0;i<n;i++){
8+
arr[i] =i;
9+
}
10+
return arr;
11+
}
12+
13+
static List generateRandomArray(int n,int bound){
14+
List arr = <dynamic>[n];
15+
Random random = new Random();
16+
for(int i = 0; i < n; i ++)
17+
arr[i] = random.nextInt(bound);
18+
return arr;
19+
}
20+
}

03Insertion-Sort/InsertionSort.dart

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
void main() {
1010
var list = [2, 4, 6, 3, 1, 5];
1111
var list2 = ["2","4","6","3","1","5"];
12+
var list3 = [2, 4, 6, 3, 1, 5];
1213
sort(list);
1314
insertionSort(list);
14-
sort(list2);
15-
insertionSort(list2);
15+
insertionSort2(list3);
16+
1617
}
1718

1819
//Dart语言原生方法
@@ -31,13 +32,33 @@ void insertionSort(List arr) {
3132
for (int j = i; j - 1 >= 0; j--) {
3233
if (Comparable.compare(arr[j] ,arr[j - 1]) < 0) {
3334
swap(arr, j - 1, j);
35+
}else{
36+
break;
3437
}
3538
}
3639
}
3740
arr.forEach((element) {
3841
print(element);
3942
});
4043

44+
}
45+
/**
46+
* 插入排序优化
47+
*/
48+
void insertionSort2(List arr) {
49+
print("手动实现优化插入排序算法----------------------");
50+
for (int i = 0; i < arr.length; i++) {
51+
var t = arr[i];
52+
int j ;
53+
for (j = i; j - 1 >= 0 &&(t.compareTo(arr[j - 1])<0); j--) {
54+
arr[j] = arr[j-1];
55+
}
56+
arr[j] = t;
57+
}
58+
arr.forEach((element) {
59+
print(element);
60+
});
61+
4162
}
4263

4364
void swap(arr, int i, int j) {

0 commit comments

Comments
 (0)