选择排序

来源:互联网 发布:优爵网络 编辑:程序博客网 时间: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