1. 程式人生 > >數據結構與算法之排序(2)選擇排序 ——in dart

數據結構與算法之排序(2)選擇排序 ——in dart

排序 冒泡 next 時間復雜度 交換 imp print gen 循環

  選擇排序的算法復雜度與冒泡排序類似,其比較的時間復雜度仍然為O(N2),但減少了交換次數,交換的復雜度為O(N),相對冒泡排序提升很多。算法的核心思想是每次選出一個最小的,然後與本輪循環中的第一個進行比較,如果需要則進行交換。

 1 import ‘dart:math‘ show Random;
 2 
 3 void main() {
 4   final seed = 100, rnd = Random(), length = 100;
 5   var list =
 6       List<int>.generate(length, (i) => rnd.nextInt(seed), growable: false
); 7 print(list); 8 print(‘---------------------‘); 9 selectSort(list); 10 print(list); 11 } 12 13 void selectSort(List<int> a) { 14 for (var i = 0; i < a.length - 1; i++) { 15 var mi = i; 16 for (var j = i + 1; j < a.length; j++) { 17 if (a[j] < a[mi]) mi = j;
18 } 19 if (i != mi) { 20 var t = a[i]; 21 a[i] = a[mi]; 22 a[mi] = t; 23 } 24 } 25 }

數據結構與算法之排序(2)選擇排序 ——in dart