冒泡排序

    冒泡排序是鄰居的兩個數據逐一進行對比交換,如此類推。最小移動次數爲0,最大對比次數爲n-1,如:最大的的數字就是第一位,則獲取最大值時,在對其它數字進行對比時,是不用進行任何數字位置的移動,而需要對所有的其它數字進行對比一次,纔可以確定當前這個是否最大值。如此可見,序最好的時間複雜度
 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; }
    }

實體排序規則:
<span style="font-size:18px;"> 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;
        }
    }</span>

冒泡排序封裝:
<span style="font-size:18px;">public class BubbleSort
    {
        /// <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 (null == null || data.Count == 0)
                return default(IList<T>);
            for (int i = 0; i < data.Count - 1; i++)
            {
                for (int j = i + 1; j < data.Count; j++)
                {
                    if (comparer.Compare(data[i], data[j]) > 0)
                    {
                        var temp = data[i];
                        data[i] = data[j];
                        data[j] = temp;
                    }
                }
            }
            return data;
        }
    }</span>

對實體進行排序:
<span style="font-size:18px;">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 = BubbleSort.SelectSort<User>(lstUser, new UserCompare());
        }
    } </span>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章