首页 > 代码库 > 【算法】 插入排序
【算法】 插入排序
【算法】 插入排序
/// <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; } var result = new List<T>(list.Count) { list[0] };// 排序后的子集合(存入第一个源集合元素) for (int i = 1; i < list.Count; i++) // 遍历源集合,从索引1开始(0 已经在子集合里) { for (int j = i - 1; j >= 0; j--) // 从后遍历子集合 { if (func(result[j], list[i])) // 如果子集元素大 { if (j == i - 1) { result.Add(result[j]); // 扩展子集集合 } result[j + 1] = result[j]; // 调整子集元素位置,使大的元素往后移一位 result[j] = list[i]; continue; } if (j == i - 1) // 如果子集最后(即最大)元素小于源集合元素,则在末尾添加 { result.Add(list[i]); } break; } } return result; }
【算法】 插入排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。