zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    Python 杨辉三角形
    Python 输出由星号*组成的菱形图案
    Python 计算组合数C(n,i),即从n个元素中任选i个,有多少种选法
    Python 快速判断一个数是不是素数
    判断今天是今年的第几天
    Pyhon 输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是 否继续输入下一个成绩,回答“yes”就继续输入下一个成绩,回答“no” 就停止输入成绩
    KMP算法
    递归实现求解幂集问题
    Python 用大量小矩形来画曲线
    Python 所谓的艺术操作2(带颜色)
  • 原文地址:https://www.cnblogs.com/drift-code/p/8808659.html
Copyright © 2011-2022 走看看