データ構造とアルゴリズムを見て、バブリング、選択、挿入の 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();
}
}
}
実行時の比較: