冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
2013-03-13 23:42
417 查看
冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
// 2013年3月13日19:19:01 吴新强
using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System.IO;
namespace Chapter3_SelectionSort
{
class CArray
{
static void Main(string[] args)
{
CArray ca = new CArray(10);
Timing tObj = new Timing();
Random random = new Random(100);//随机数
for (int i= 0;i < 10;i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("BubbleSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("BubbleSort During Sorting:");//排序中
Console.WriteLine();
ca.BubbleSort();// 调用冒泡排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("BubbleSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("BubbleSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示冒泡排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("SelectionSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("SelectionSort During Sorting:");//排序中
Console.WriteLine();
ca.SelectionSort();// 调用选择排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("SelectionSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("SelectionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("InsertionSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("InsertionSort During Sorting:");//排序中
Console.WriteLine();
ca.InsertionSort();// 调用选择排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("InsertionSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("InsertionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
// Console.WriteLine("请输入查找的值:");
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("请输入查找的值:");
ca.RbinSearch(5,1,10 );// 调用折半查找法进行查找
int v=Convert .ToInt32(Console .ReadLine());
// if(value==mid)
// Console.WriteLine("你查找的值存在!");
// else
// Console.WriteLine("你查找的值不存在!");
Console.WriteLine();
tObj.StopTime();// 测试查找时间的截止时间
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("RbinSearch time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
}
public void BubbleSort()// 冒泡排序法
{
int temp;
for (int outer = upper; outer >= 1; outer--)
{
for (int inner = 0; inner <= outer - 1; inner++)
{
if ((int)array[inner] > array[inner + 1])
{
temp = array[inner];
array[inner] = array[inner + 1];
array[inner + 1] = temp;
}
}
this.DisplayElements();
}
}
public void SelectionSort()// 选择排序法
{
int temp, min;
for (int outer = 0; outer <= upper; outer++)
{
min = outer;
for (int inner = outer + 1; inner <= upper; inner++)
{
if (array[inner] < array[min])
{
min = inner;
}
temp = array[outer];
array[outer] = array[min];
array[min]= temp;
}
this.DisplayElements();
}
}
public void InsertionSort()// 插入排序法
{
int temp, inner;
for (int outer = 1; outer <= upper; outer++)
{
inner = outer;
temp = array[outer];
while (inner >0 &&array [inner -1]>=temp)
{
array [inner]=array [inner -1];
inner -= 1;
}
array[inner] = temp;
this.DisplayElements();
}
}
public int RbinSearch(int value, int lower, int upper)
{
int mid;
if (lower > upper)
return -1;
else
{
// int mid;
mid = (int)(lower + upper) / 2;
if (value < array[mid])
return RbinSearch(value, lower, mid - 1);
else if (value == mid)
return mid;
else
return RbinSearch(value, mid + 1, upper);
}
if (value == mid)
Console.WriteLine("你查找的值存在!");
else
Console.WriteLine("你查找的值不存在!");
}
private int[] array;
private int upper;
private int numElements;
public CArray(int Size)
{
array = new int[Size];
upper = Size - 1; // upper 最大长度
numElements = 0;// 数组变量
}
public void Insert(int item)
{
array[numElements] = item;
numElements++;
}
public void DisplayElements()// 显示数据
{
for (int i = 0; i <= upper; i++)
Console.Write(array[i] + " ");
}
public void Clear()// 删除数据
{
for (int i = 0; i < upper; i++)
{
array[i] = 0;
numElements = 0;
}
}
}
public class Timing // 时间测试类
{
TimeSpan duration;
public Timing()
{
duration = new TimeSpan(0);
}
public void StopTime()
{
duration=Process.GetCurrentProcess().TotalProcessorTime;
}
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public TimeSpan Result()
{
return duration;
}
}
}
/*class CArray
{
private int[] array;
private int upper;
private int numElements;
public CArray(int Size)
{
array = new int[Size];
upper = Size - 1;
numElements = 0;
}
public void Insert(int item)
{
array[numElements] = item;
numElements++;
}
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
Console.WriteLine(array[i] + "");
}
public void Clear()
{
for (int i = 0; i < upper i++)
{
array [i]=0;
numElements=0;
}
}
}
}*/
运行结果:
// 2013年3月13日19:19:01 吴新强
using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System.IO;
namespace Chapter3_SelectionSort
{
class CArray
{
static void Main(string[] args)
{
CArray ca = new CArray(10);
Timing tObj = new Timing();
Random random = new Random(100);//随机数
for (int i= 0;i < 10;i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("BubbleSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("BubbleSort During Sorting:");//排序中
Console.WriteLine();
ca.BubbleSort();// 调用冒泡排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("BubbleSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("BubbleSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示冒泡排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("SelectionSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("SelectionSort During Sorting:");//排序中
Console.WriteLine();
ca.SelectionSort();// 调用选择排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("SelectionSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("SelectionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
Console.WriteLine("InsertionSort Before Sorting:");//排序前
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("InsertionSort During Sorting:");//排序中
Console.WriteLine();
ca.InsertionSort();// 调用选择排序法进行排序
Console.WriteLine();
tObj.StopTime();// 测试排序时间的截止时间
Console.WriteLine("InsertionSort After Sorting:");//排序后
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("InsertionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
Console.WriteLine();
ca.Clear();
for (int i = 0; i < 10; i++)
{
ca.Insert(random.Next(0, 100));
}
// Console.WriteLine("请输入查找的值:");
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine(); // 换行
tObj.StartTime();// 测试排序时间的开始时间处
Console.WriteLine();
Console.WriteLine("请输入查找的值:");
ca.RbinSearch(5,1,10 );// 调用折半查找法进行查找
int v=Convert .ToInt32(Console .ReadLine());
// if(value==mid)
// Console.WriteLine("你查找的值存在!");
// else
// Console.WriteLine("你查找的值不存在!");
Console.WriteLine();
tObj.StopTime();// 测试查找时间的截止时间
Console.WriteLine();
ca.DisplayElements();//显示数据
Console.WriteLine();
Console.WriteLine("RbinSearch time( .net):" + tObj.Result().TotalMilliseconds + " MS");// 显示选择排序法共使用了多少时间
}
public void BubbleSort()// 冒泡排序法
{
int temp;
for (int outer = upper; outer >= 1; outer--)
{
for (int inner = 0; inner <= outer - 1; inner++)
{
if ((int)array[inner] > array[inner + 1])
{
temp = array[inner];
array[inner] = array[inner + 1];
array[inner + 1] = temp;
}
}
this.DisplayElements();
}
}
public void SelectionSort()// 选择排序法
{
int temp, min;
for (int outer = 0; outer <= upper; outer++)
{
min = outer;
for (int inner = outer + 1; inner <= upper; inner++)
{
if (array[inner] < array[min])
{
min = inner;
}
temp = array[outer];
array[outer] = array[min];
array[min]= temp;
}
this.DisplayElements();
}
}
public void InsertionSort()// 插入排序法
{
int temp, inner;
for (int outer = 1; outer <= upper; outer++)
{
inner = outer;
temp = array[outer];
while (inner >0 &&array [inner -1]>=temp)
{
array [inner]=array [inner -1];
inner -= 1;
}
array[inner] = temp;
this.DisplayElements();
}
}
public int RbinSearch(int value, int lower, int upper)
{
int mid;
if (lower > upper)
return -1;
else
{
// int mid;
mid = (int)(lower + upper) / 2;
if (value < array[mid])
return RbinSearch(value, lower, mid - 1);
else if (value == mid)
return mid;
else
return RbinSearch(value, mid + 1, upper);
}
if (value == mid)
Console.WriteLine("你查找的值存在!");
else
Console.WriteLine("你查找的值不存在!");
}
private int[] array;
private int upper;
private int numElements;
public CArray(int Size)
{
array = new int[Size];
upper = Size - 1; // upper 最大长度
numElements = 0;// 数组变量
}
public void Insert(int item)
{
array[numElements] = item;
numElements++;
}
public void DisplayElements()// 显示数据
{
for (int i = 0; i <= upper; i++)
Console.Write(array[i] + " ");
}
public void Clear()// 删除数据
{
for (int i = 0; i < upper; i++)
{
array[i] = 0;
numElements = 0;
}
}
}
public class Timing // 时间测试类
{
TimeSpan duration;
public Timing()
{
duration = new TimeSpan(0);
}
public void StopTime()
{
duration=Process.GetCurrentProcess().TotalProcessorTime;
}
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public TimeSpan Result()
{
return duration;
}
}
}
/*class CArray
{
private int[] array;
private int upper;
private int numElements;
public CArray(int Size)
{
array = new int[Size];
upper = Size - 1;
numElements = 0;
}
public void Insert(int item)
{
array[numElements] = item;
numElements++;
}
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
Console.WriteLine(array[i] + "");
}
public void Clear()
{
for (int i = 0; i < upper i++)
{
array [i]=0;
numElements=0;
}
}
}
}*/
运行结果:
![](http://img.my.csdn.net/uploads/201303/13/1363189584_7054.gif)
相关文章推荐
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- iOS开发--图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序
- 数据结构(C#)--冒泡、插入、快速、堆、归并、希尔、选择各种排序排序过程比较以及各种排序的所用时间的对比
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 冒泡排序、选择排序、插入排序、快速排序、二叉树
- C++算法 冒泡排序,快速排序,插入排序,希尔排序,计数排序,基数排序 性能比较
- 递归,汉诺塔,冒泡排序,选择排序,插入排序,快速排序
- 二分法查找和快速排序 二分法是分治算法的一种特殊形式,利用分治策略求解时,所需时间取决于分解后子问题的个数、子问题的规模大小等因素,而二分法,由于其划分的简单和均匀的特点,是查找数据时经常采用的一种有
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
- 排序(插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排、归并排序、基数排序)
- 几种简单的排序:选择排序,插入排序,快速排序,冒泡排序
- Java-冒泡排序、快速排序、插入排序、快速排序
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- 内排序(插入排序、冒泡排序、选择排序、shell排序、快速排序、归并排序、堆排序)
- python开发之路Day17-算法设计(冒泡排序、选择排序、插入排序、二叉树)
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)