选择排序
来源:互联网 发布:优爵网络 编辑:程序博客网 时间:2024/05/18 00:30
选择排序是冒泡排序的延伸,冒泡排序每次相邻的两个数进行对比,对比出最大(最小)值都需要移动交换数据,而选择排序是当前的数据与它后面的所以数据进行对比,对比的结果后进行交换下标,到最后才进行数据交换。最好的时间复杂度为
0(n) ,最坏时间复杂度为
0(n²) ,因此冒泡排序总的平均时间复杂度为
0(n²)
。实体定义
public class User { /// <summary> /// 名称 /// </summary> public string Name { get; set; } /// <summary> /// 年龄 /// </summary> public int Age { get; set; } /// <summary> /// 性别 /// </summary> public string Sex { get; set; } /// <summary> /// 手机 /// </summary> public string Mobile { get; set; } }
实体排序规则
public class UserCompare : IComparer<User> { public int Compare(User source, User target) { int result = -1; if (source.Age > target.Age) result = 1; if (source.Age == target.Age) result = 0; if (source.Age == target.Age) result = -1; return result; } }
选择排序封装
public class SelectionSort { /// <summary> /// 选择排序封装 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <param name="comparer"></param> /// <returns></returns> public static IList<T> SelectSort<T>(IList<T> data, IComparer<T> comparer) { if (data == null || data.Count == 0) return default(IList<T>); T temp = default(T); int minIndex = 0; for (int i = 0; i < data.Count; i++) { minIndex = i; for (int j = i; j < data.Count; j++) { if (comparer.Compare(data[i], data[j]) > 0) { minIndex = j; } } temp = data[minIndex]; data[minIndex] = data[i]; data[i] = temp; } return data; } }
public class SortClient { public void SortUser() { List<User> lstUser = new List<User>(); User zhangsan = new User(); zhangsan.Age = 2; zhangsan.Name = "张三"; lstUser.Add(zhangsan); User lisi = new User(); lisi.Age = 5; lisi.Name = "李四"; lstUser.Add(lisi); User wangwu = new User(); wangwu.Age = 4; wangwu.Name = "王五"; lstUser.Add(wangwu); User zhaoliu = new User(); zhaoliu.Age = 3; zhaoliu.Name = "赵六"; lstUser.Add(zhaoliu); IList<User> lstUserSort = SelectionSort.SelectSort<User>(lstUser, new UserCompare()); } }
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- BZOJ 1117: [POI2009]救火站Gas 贪心
- 11.5 考试驾到2
- 单点登录 -iwebshop模拟引用
- flask-tips(01)去掉url末尾的/
- UiObject中中文输入问题
- 选择排序
- Pythonner三大工具之PIP
- 深度解析RabbitMQ集群——超大规模高可用OpenStack平台核心技术深入解析系列高级篇(三)
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- java中outputstream以及其子类 flush有什么作用呢
- java虚拟机运行过程
- Enterprise Architect 7.0入门教程(目前最详细的中文教程)
- 如何在PS上直接使用FONTAWESOME图标?
- 求数列的和