您的位置:首页 > 其它

基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]

2013-04-24 16:10 453 查看
using System;
using System.Diagnostics;

namespace TestCArray
{
class Program
{
static void Main(string[] args)
{
Timing sortTime = new Timing();

// int numItems = 1000;
// int numItems = 10000;
int numItems = 100000;
CArray theArray;

theArray = new CArray(numItems);
sortTime.StartTime();
theArray.InsertionSort();
sortTime.StopTime();
Console.WriteLine("InsertionSort ----->" + sortTime.Result().TotalMilliseconds);
theArray.Clear();

theArray = new CArray(numItems);
sortTime.StartTime();
theArray.BubbleSort();
sortTime.StopTime();
Console.WriteLine("BubbleSort ----->"+sortTime.Result().TotalMilliseconds);
theArray.Clear();

theArray = new CArray(numItems);
sortTime.StartTime();
theArray.SelectionSort();
sortTime.StopTime();
Console.WriteLine("SelectionSort ----->" + sortTime.Result().TotalMilliseconds);
theArray.Clear();
}
}

public class CArray
{
private int[] arr;
private int upper;
private int numElements;

Random rnd = new Random(100);

public CArray(int size)
{
arr = new int[size];
upper = size - 1;
numElements = 0;

Init();
}

public void Insert(int item)
{
arr[numElements] = item;
numElements++;
}

public void Init()
{
for (int i = 0; i <= upper; i++)
{
Insert(rnd.Next() * 100);
}
}

public void DisplayElements()
{
Console.Write("---->");
for (int i = 0; i <= upper; i++)
{
Console.Write(arr[i] + " ");
}
Console.WriteLine();
}

public void Clear()
{
for (int i = 0; i <= upper; i++)
{
arr[i] = 0;
}

numElements = 0;
}

// 冒泡排序
public void BubbleSort()
{
int temp;

for (int outer = 0; outer <= upper; outer++)
{
for (int inner = 0; inner < upper-outer; inner++)
{
if (arr[inner+1]<arr[inner])
{
temp = arr[inner + 1];
arr[inner + 1] = arr[inner];
arr[inner] = temp;
}
}
//this.DisplayElements();
}
}

// 选择排序
public void SelectionSort()
{
int temp;
for (int outer = 0; outer < upper; outer++)
{
for (int inner = outer+1; inner <= upper; inner++)
{
if (arr[outer] > arr[inner])
{
temp = arr[outer];
arr[outer] = arr[inner];
arr[inner] = temp;
}
}
//this.DisplayElements();
}
}

// 插入排序
public void InsertionSort()
{
int inner, temp;
for (int outer = 1; outer <= upper; outer++)
{
temp = arr[outer];
inner = outer;

while (inner > 0 && arr[inner-1] >= temp)
{
arr[inner] = arr[inner - 1];
inner -= 1;
}

arr[inner] = temp;

//this.DisplayElements();
}
}
}

/// <summary>
/// 时间测试类
/// </summary>
public class Timing
{
/// <summary>
/// 记录开始时间
/// </summary>
private TimeSpan startingTime;

/// <summary>
/// 记录方法的用时
/// </summary>
private TimeSpan duration;

/// <summary>
/// 初始化
/// </summary>
public Timing()
{
startingTime = new TimeSpan(0);
duration = new TimeSpan(0);
}

/// <summary>
/// 结束计时
/// </summary>
public void StopTime()
{
duration = Process.GetCurrentProcess().Threads[0]
.UserProcessorTime.Subtract(startingTime);
}

/// <summary>
/// 开始计时
/// </summary>
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
startingTime = Process.GetCurrentProcess().Threads[0].UserProcessorTime;
}

/// <summary>
/// 获取结果
/// </summary>
/// <returns></returns>
public TimeSpan Result()
{
return duration;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐