当前位置: 移动技术网 > IT编程>开发语言>.net > C#之选择排序

C#之选择排序

2018年04月13日  | 移动技术网IT编程  | 我要评论

郎溪房屋出租,李紫丹,鼠标指针

算法描述

1.假定未排序序列中第一位为数组最小值,通过与后面的数值进行比较,找到未排序序列中最小值,与未排序序列第一位交换位置;

2.重复步骤一,对剩余未排序序列进行比较找出最小值,与未排序序列中第一位数值交换位置,直到数组所有数值排序完成;

 

代码实现

/*
        例如:对数组:{ 2,7,6,3,1 }进行比较 

        第一轮:{ 1,7,6,3,2 } :共比较四次
        第二轮:{ 1,2,6,3,7 } :共比较三次
        第三轮:{ 1,2,3,6,7 } :共比较二次
        第四轮:{ 1,2,3,6,7 } :共比较一次
        */
        public void Select(int[] arr)
        {
            int temp;
            int number;
            int numIndex;

            bool flag;

            for (int i = 0; i < arr.Length -1; i++)
            {
                flag = true;
                number = arr[i];
                numIndex = i;

                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (number > arr[j])
                    {
                        number = arr[j];
                        numIndex = j;
                        flag = false;
                    }
                }

                temp = arr[i];
                arr[i] = arr[numIndex];
                arr[numIndex] = temp;

                if (flag == true)
                {
                    break;
                }

                Console.Write("选择排序:");
                foreach (int item in arr)
                {
                    Console.Write(item + " ");
                }
                Console.WriteLine();

            }
        }

 

完整代码

using System;

namespace SelectSortApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var setArray = new SetArray();
            var selectSort = new SelectSort();

            int[] arr = setArray.GetArray();
            selectSort.Select(arr);

            Console.ReadLine();
        }
    }

    class SetArray
    {
        public int[] GetArray()
        {
            int length;
            int[] arr;

            Console.WriteLine("请输入数组长度:");
            length = Convert.ToInt32(Console.ReadLine());

            arr = new int[length];

            for (int i = 0; i <= length -1; i++)
            {
                Console.Write("请输入数组第{0}位数值:", i);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }

            Console.Clear();

            Console.Write("arr[] = {");
            foreach (int item in arr)
            {
                Console.Write(item + " ");
            }
            Console.Write("}\n");
            return arr;
        }
    }

    class SelectSort
    {
        public void Select(int[] arr)
        {
            int temp;
            int number;
            int numIndex;

            bool flag;

            for (int i = 0; i < arr.Length -1; i++)
            {
                flag = true;
                number = arr[i];
                numIndex = i;

                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (number > arr[j])
                    {
                        number = arr[j];
                        numIndex = j;
                        flag = false;
                    }
                }

                temp = arr[i];
                arr[i] = arr[numIndex];
                arr[numIndex] = temp;

                if (flag == true)
                {
                    break;
                }
            }
            Console.Write("选择排序:");
            foreach (int item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网