• 排序算法---选择排序


    基本思想:

    从待排序的记录序列中选择关键码(或最大)的记录并将它与序列中的第一个记录交换位置。

    时间复杂度:

    n(n-1)/2

    具体实现:

    抽象基类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DataStructure
    {
        public abstract class BaseSort<T> where T : IComparable
        {
            /// <summary>
            /// 排序抽象方法
            /// </summary>
            /// <param name="array"></param>
            public abstract void Sort(T[] array);
    
            /// <summary>
            /// 元素交换
            /// </summary>
            /// <param name="array"></param>
            /// <param name="replacedIndex"></param>
            /// <param name="index"></param>
            public void Swap(T[] array, int SwapedIndex, int index)
            {
                T temp = array[index];
                array[index] = array[SwapedIndex];
                array[SwapedIndex] = temp;
            }
        }
    }

    具体实现类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DataStructure
    {
        public class SelectionSort<T> : BaseSort<T> where T : IComparable
        {
            public override void Sort(T[] array)
            {
                if (array != null)
                {
                    for (int i = 0; i < array.Length; i++)
                    {
                        int min = i;
                        for (int j = i + 1; j < array.Length; j++)
                        {
                            if (array[min].CompareTo(array[j]) > 0)
                                min = j;
                        }
                        base.Swap(array,i, min);
                    }
                }
                else
                    throw new ArgumentNullException();
            }
        }
    }
  • 相关阅读:
    第六章学习小结
    malloc iOS
    iOS事件传递机制
    对 runloop 的理解
    深恶痛绝重写setter和getter
    数据库常见问题总结
    iOS多应用自动打包
    一段文字中包含多种语言时行间距问题
    一个成熟应用的排版方案
    Flask纪要
  • 原文地址:https://www.cnblogs.com/fang-beny/p/3599423.html
Copyright © 2020-2023  润新知