VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之C#之选择排序

算法描述

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();
        }
    }
}


相关教程