首页 > 代码库 > 【算法】 简单选择排序
【算法】 简单选择排序
【算法】 简单选择排序
/// <summary> /// 简单选择排序 /// 思路 (与冒泡排序类似): /// 遍历源集合,每次选出最大或最小元素,放在未排序子集末尾或首位 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <param name="func"></param> /// <returns></returns> public static List<T> Sort<T>(List<T> list, Func<T, T, bool> func) { if (list == null || list.Count <= 1) { return list; } for (int i = 0; i < list.Count; i++) { int maxIndex = i; // 最大元素索引 T minT = list[i]; // 最大元素 for (int j = i + 1; j < list.Count; j++) { if (func(minT, list[j])) // 判断是否是最大元素 { maxIndex = j; // 缓存最大元素 minT = list[j]; } } if (maxIndex != i) // 将最大元素与遍历的元素替换位置 { list[maxIndex] = list[i]; list[i] = minT; } } return list; }
【算法】 简单选择排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。