• 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("}
    ");
                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();
            }
        }
    }
  • 相关阅读:
    LeetCode周赛#206
    CET-6备考丨词组、佳句积累
    界面设计9.24第一次课
    图像超分辨率重建
    OpenGL和计算机图形学初步认识
    OpenGL装gult库
    安装java
    vs2019配置Opengl
    最长上升子序列(最长递增子序列)LIS
    c++科学计数法 、long long的范围
  • 原文地址:https://www.cnblogs.com/drift-code/p/8808659.html
Copyright © 2020-2023  润新知