选择排序

来源:互联网 发布:14款新帝豪安装软件 编辑:程序博客网 时间:2024/05/21 12:43

使用C#实现选择排序(selection_sort)

namespace selection_sort{    class Program    {        static void Main(string[] args)        {            string condition1, condition2;            do            {                Console.WriteLine("$$$ 开始队列的选择排序 $$$");                Console.WriteLine("*************************************");                int arraySize;                //正确输入后跳出while                while (true)                {                    Console.Write("输入数组的大小:");                    if (int.TryParse(Console.ReadLine(), out arraySize))                        break;  //跳出循环                    else                        MessageBox.Show("输入数据不正确!");                }                 int[] array = new int[arraySize];                for (int i = 0; i < arraySize; i++)                {                    while (true)                    {                        Console.Write("输入数组的第{0}个元素:", i + 1);                        if (int.TryParse(Console.ReadLine(), out array[i]))                            break;  //跳出循环                        else                            MessageBox.Show("输入数据不正确!");                    }                }                SelectSort(array);   //调用选择排序函数                while (true)                {                    Console.WriteLine("输入A(a)升序排列,输入B(b)降序排列!"); //选择输出方式,升序或者降序                    condition1 = Console.ReadLine();                    if (condition1 == "A" || condition1 == "a" || condition1 == "B" || condition1 == "b")                        break;                    else                        MessageBox.Show("输入A(a)或B(b)!");                }                //按输出方式输出队列                if (condition1 == "A" || condition1 == "a")                {                    Console.Write("升序队列:");                    for (int i = 0; i < array.Length; i++)                        Console.Write(array[i] + " ");                }                if (condition1 == "B" || condition1 == "b")                {                    Console.Write("降序队列:");                    for (int i = array.Length - 1; i >= 0; i--)                        Console.Write(array[i] + " ");                }                Console.WriteLine();                while (true)                {                    Console.WriteLine("输入Y(y)继续,输入N(n)结束!"); //选择是否继续                    condition2 = Console.ReadLine();                    if (condition2 == "Y" || condition2 == "y" || condition2 == "N" || condition2 == "n")                        break;                    else                        MessageBox.Show("输入Y(y)或N(n)!");                }                Console.WriteLine();            } while (condition2=="Y" || condition2=="y");        }        //选择排序函数        private static void SelectSort(int[] arr)        {            for (int i = 0; i < arr.Length - 1; i++)            {                int minVal = arr[i];                int minIndex = i;                for (int j = i + 1; j < arr.Length; j++)                {                    if (minVal > arr[j])                    {                        minVal = arr[j];  //每次遍历找出最小值                        minIndex = j;   //交换下标                    }                }                Swap(ref arr[i], ref arr[minIndex]);    //将此趟遍历的最小值保存到这一趟比较的第一个位置            }        }        //交互两个整数的函数        private static void Swap(ref int a, ref int b)        {            int temp;            temp = a;            a = b;            b = temp;        }    }}

代码地址:http://download.csdn.net/download/github_37588138/10165103

原创粉丝点击