zoukankan      html  css  js  c++  java
  • 排序算法---选择排序

    基本思想:

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

    时间复杂度:

    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();
            }
        }
    }
  • 相关阅读:
    2017蓝桥杯最大公共子串(C++B组)
    C++ memset函数用法
    2017蓝桥杯取位数(C++B组)
    2017蓝桥杯承压计算(C++ B组)
    安卓动画(Animation使用)
    2017蓝桥杯等差素数(C++B组)
    JSON取值前判断
    jstl
    centos到底下载哪个版本?
    HTML页面定时跳转方法
  • 原文地址:https://www.cnblogs.com/fang-beny/p/3599423.html
Copyright © 2011-2022 走看看