数据结构与算法(Dart)之选择排序(十三)

每次从未排序的部分选取最小(或最大)的元素,放到已排序部分的末尾。

开始默认第一个元素最小。

时间复杂度: O(n²), 不稳定

ini 复制代码
/// 选择排序
selectionSort(List<int> src) {
  for (int i = 0; i < src.length - 1; i++) {
    /// min记录最小值的下标
    int min = i;
    for (int j = i + 1; j < src.length; j++) {
      if (src[j] < src[min]) {
        min = j;
      }
    }

    /// 此时min已经保存最小值下标,将min换到最前面
    if (min != i) {
      int temp = src[i];
      src[i] = src[min];
      src[min] = temp;
    }
  }

  print("选择排序, src:$src \n");
}

void main() {
  selectionSort([36, 3, 4, 2, 1, 6, 5, 9, 7, 8, 10]);
}
相关推荐
会叫的恐龙几秒前
C++ 核心知识点汇总(第四日)(循环结构)
c++·算法·循环结构
sin_hielo5 分钟前
leetcode 3637
数据结构·算法·leetcode
仍然.6 分钟前
算法题目---双指针算法
数据结构·算法·排序算法
2401_841495646 分钟前
【LeetCode刷题】翻转二叉树
python·算法·leetcode··递归·节点·翻转二叉树
嵌入小生00710 分钟前
数据结构与算法 | 完全二叉树的实现、哈希表的实现
linux·c语言·数据结构·算法·vim·嵌入式
渡我白衣12 分钟前
无中生有——无监督学习的原理、算法与结构发现
人工智能·深度学习·神经网络·学习·算法·机器学习·语音识别
小龙报13 分钟前
【数据结构与算法】单链表的综合运用:1.合并两个有序链表 2.分割链表 3.环形链表的约瑟夫问题
c语言·开发语言·数据结构·c++·算法·leetcode·链表
蓝海星梦14 分钟前
GRPO 算法演进:2025 年 RL4LLM 领域 40+ 项改进工作全景解析
论文阅读·人工智能·深度学习·算法·自然语言处理·强化学习
拼好饭和她皆失14 分钟前
图论:最小生成树,二分图详细模板及讲解
c++·算法·图论
傻小胖15 分钟前
19.ETH-挖矿算法-北大肖臻老师客堂笔记
笔记·算法·区块链