选择排序(dart实现)

2020-11-04  本文已影响0人  锦鲤跃龙

选择排序

[toc]

1.执行流程

  1. 从序列中找出最大的那个元素,然后与组末尾的元素交换位置
    执行完一轮后,最末未的那个元素就是最大的元
  2. 忽略1中曾找到的最大元素,重复执行步骤1

2. dart代码

///
/// Author: liyanjun
/// description: 选择排序
///
List<int> selectSourt(List<int> list) {
  if (list == null || list.length == 0) {
    return [];
  }
  for (var end = list.length - 1; end > 0; end--) {
    int maxIndex = 0;
    for (var begin = 1; begin <= end; begin++) {
      if (list[maxIndex] <= list[begin]) {
        maxIndex = begin;
      }
    }
    int temp = list[maxIndex];
    list[maxIndex] = list[end];
    list[end] = temp;
  }
  return list;
}

运行测试

main(List<String> args) {
  List<int> list = IntergerTools.random(10, 1, 20);//生成随机数
  // List<int> list = IntergerTools.ascOrder(1, 1000);//有序
  //  List<int> list = IntergerTools.tailAscOrder(1, 10000, 2000);//尾部有序
  List<int> list2 = List.from(list);
  List<int> list3 = List.from(list);
  print("排序前:$list");
  // print(list2);
  TimesTools.test('selectSourt', () {
    List result = selectSourt(list);
     print("排序后:$result");
     bool isAs = IntergerTools.isAscOrder(result);//工具类判断是否有序,返回bool值
     print("是否有序:${isAs}");
     Asserts.test(isAs);//利用断言是否有序
  });
}

运行结果

排序前:[2, 7, 19, 13, 9, 4, 12, 19, 16, 10]
【selectSourt】
开始:2020-11-01 10:24:12.729606
排序后:[2, 4, 7, 9, 10, 12, 13, 16, 19, 19]
是否有序:true
结束 2020-11-01 10:24:12.738810
耗时:0.001 秒
-------------------------------------

总结

上一篇 下一篇

猜你喜欢

热点阅读