zoukankan      html  css  js  c++  java
  • C#实现选择排序

    源文件:http://pan.baidu.com/share/link?shareid=439747&uk=3912660076

    参考代码来源于课本

    //Main

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SelectionSort
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Please enter the array length:");
                int length = Convert.ToInt32(Console.ReadLine());
                Function obj = new Function(length);
    
                Console.WriteLine("The array is:");
                Console.WriteLine(obj);
    
                obj.Sort();
    
                Console.WriteLine("Sorted array:");
                Console.WriteLine(obj);
    
                Console.ReadKey(); 
            }
        }
    }

    //Class

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SelectionSort
    {
        public class Function
        {
            /// <summary>
            /// 声明变量
            /// </summary>
            private int[] array;
            private static Random ran = new Random();
    
            /// <summary>
            /// 初始化数组
            /// </summary>
            /// <param name="length"></param>
            public Function(int length)
            {
                array = new int[length];
                while (length > 0)
                    array[--length] = ran.Next(0, 100);
            }
    
            public void Sort()
            {
                SelectionSort();
            }
    
            /// <summary>
            /// 选择排序:
            ///         第一次迭代选择数组中的最小元素,将其与数组的第一个元素交换。
            ///     第二次迭代选择数组中剩下元素的最小元素,将其与第二个元素交换。以此类推....
            ///     最后,最大元素留在数组最后一个位置。
            ///     (第i次迭代之后,数组中最小的i个元素,已按升序放到了数组的前i个元素中)
            /// 核心算法时间复杂度:
            ///          T(n)=O(n²)
            /// </summary>
            public void SelectionSort()
            {
                for (int index = 0; index < array.Length; index++)
                {
                    //设最小元素索引为迭代的开始
                       int minValueIndex = index;
                    //子循环开始索引
                       int subIndex = index;
                    while (++subIndex < array.Length)
                    {
                        if (array[subIndex] < array[minValueIndex])
                        {
                            //将最小值的索引更新
                                minValueIndex = subIndex;
                        }
                    }
                    //将最小值提前
                       if (minValueIndex != index)
                        Swap(index, minValueIndex);
                }
            }
    
            /// <summary>
            /// 元素交换
            /// </summary>
            /// <param name="one"></param>
            /// <param name="another"></param>
            public void Swap(int one, int another)
            {
                int temp;
                temp = array[one];
                array[one] = array[another];
                array[another] = temp;
            }
    
            /// <summary>
            ///输出.
            /// </summary>
            /// <returns></returns>
            public override string ToString()
            {
                string temporary = string.Empty;
                foreach (int element in array)
                    temporary += element + " ";
                return temporary += "\n";
            }
        }
    }

    //运行结果截图:


  • 相关阅读:
    软件工程结课总结
    第13次作业--邮箱的正则表达式
    第12次作业--你的生日
    第10次作业
    找回感觉的练习
    第四次博客作业-结对项目
    Java16周作业
    Java 15周作业
    Java 14 周作业
    第13周作业集
  • 原文地址:https://www.cnblogs.com/wjshan0808/p/3020333.html
Copyright © 2011-2022 走看看