C# データ構造とアルゴリズム - 基本的な並べ替えアルゴリズム

データ構造とアルゴリズムを見て、バブリング、選択、挿入の 3 つの並べ替えアルゴリズムの実行時間を C# で比較しました。

using System;
using System.Diagnostics;

namespace 基础排序算法
{
    class CArray
    {
        private int[] arr;
        private int upper;
        private int numElements;
        public CArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            numElements = 0;
        }
        public void Insert(int item)
        {
            arr[numElements] = item;
            numElements++;
        }
        public void DisplayElements()
        {
            for (int i = 0; i <= upper; i++)
            {
                if (i == upper)
                {
                    Console.WriteLine(arr[i] + " ");
                    break;
                }
                Console.Write(arr[i] + " ");
            }
        }
        public void Clear()
        {
            for (int i = 0; i <= upper; i++)
            {
                arr[i] = 0;
            }
            numElements = 0;
        }
        /// <summary>
        /// 冒泡排序
        /// </summary>
        public void Bubble_Sort()
        {
            for (int i = upper; i > 1; i--)
            {
                for (int j = 0; j < i; j++)
                {
                    int temp;
                    if (arr[j]>arr[j+1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
        /// <summary>
        /// 选择排序
        /// </summary>
        public void Slection_Sort()
        {
            for (int i = 0; i <= upper; i++)
            {
                int tempMin;
                tempMin = arr[i];
                for (int j = i; j <= upper-1; j++)
                {
                    if (arr[j + 1] < tempMin)
                    {
                        tempMin = arr[j + 1];
                        arr[j + 1] = arr[i];
                    }
                }
                arr[i] = tempMin;
            }
        }
        public void Insert_Sort()
        {
            int temp;
            for (int i = 0; i <= upper; i++)
            {
                temp = arr[i];
                for (int j = i-1; j >0; j--)
                {
                    if (arr[j]>temp)
                    {
                        arr[i] = arr[j];
                    }
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int size = 100000;
            CArray nums = new CArray(size);
            Random rand = new Random();
            for (int i = 0; i <= size - 1; i++)
            {
                nums.Insert((i+1) * rand.Next(0,100));
            }

            CArray nums1 =new CArray(size);
            for (int i = 0; i <= size - 1; i++)
            {
                nums1.Insert((i + 1) * rand.Next(0, 100));
            }

            CArray nums2 = new CArray(size);
            for (int i = 0; i <= size - 1; i++)
            {
                nums2.Insert((i + 1) * rand.Next(0, 100));
            }

            Console.WriteLine("冒泡排序前:" );
            //nums.DisplayElements();
            Stopwatch sw = new Stopwatch();
            sw.Start();
            nums.Bubble_Sort();
            sw.Stop();
            Console.WriteLine("冒泡排序后:");
            //nums.DisplayElements();
            Console.WriteLine("冒泡排序花费的时间:" + sw.ElapsedMilliseconds);

            Console.WriteLine("选择排序前:");
            //nums1.DisplayElements();
            Stopwatch sw1 = new Stopwatch();
            sw1.Start();
            nums1.Slection_Sort();
            sw1.Stop();
            Console.WriteLine("选择排序后:");
            //nums1.DisplayElements();
            Console.WriteLine("选择排序花费的时间:" + sw1.ElapsedMilliseconds);

            Console.WriteLine("插入排序前:");
            //nums2.DisplayElements();
            Stopwatch sw2 = new Stopwatch();
            sw2.Start();
            nums2.Slection_Sort();
            sw2.Stop();
            Console.WriteLine("插入排序后:");
            //nums2.DisplayElements();
            Console.WriteLine("插入排序花费的时间:" + sw2.ElapsedMilliseconds);


            Console.ReadKey(); 
        }
        
    }
}

実行時の比較:

 

おすすめ

転載: blog.csdn.net/beyond951/article/details/124273171