基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]
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; } } }
相关文章推荐
- 基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]
- 插入排序是基本排序算法中最好的一种,虽然插入排序也是需要O(N^2)时间,但它比冒泡排序快一倍,比选择排序还要快点。
- 基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)
- 三个基本排序算法执行效率比较(冒泡排序,选择排序和插入排序)
- 三种基本排序算法-冒泡排序,选择排序,插入排序
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 常用算法--基本排序算法(冒泡排序,选择排序,插入排序,快速排序,归并排序,桶排序)
- 算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 面试最基本的三种排序算法 冒泡排序 插入排序 选择排序
- java基本排序算法-插入排序-快速排序-选择排序-冒泡排序
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- 三种排序算法python源码——冒泡排序、插入排序、选择排序
- 【学习总结】Java中最常用的三大排序算法-冒泡排序、选择排序、插入排序
- Java程序员从笨鸟到菜鸟(二)Java实现冒泡排序、快速排序、插入排序、选择排序等基本排序方式
- 排序-基本排序-选择排序,插入排序,冒泡排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- 三个简单、基本的排序算法---插入排序、选择排序、冒泡排序