您的位置:首页 > 编程语言 > C#

C#算法基础之插入排序

2013-11-28 18:02 477 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsolePractice
{
class CArray
{
private int[] arr;
//数组大小
private int upper;
//下标
private int numElements;

/// <summary>
/// 初始化数组参数
/// </summary>
/// <param name="size"></param>
public CArray(int size)
{
arr = new int[size];
upper = size - 1;
numElements = 0;
}

/// <summary>
/// 插入方法
/// </summary>
/// <param name="item">存储的数</param>
public void Insert(int item)
{
arr[numElements] = item;
numElements++;
}

/// <summary>
/// 输出方法
/// </summary>
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
{
Console.Write(arr[i] + " ");
}
Console.WriteLine();
}

/// <summary>
/// 清除数组
/// </summary>
public void Clear()
{
for (int i = 0; i <= upper; i++)
{
arr[i] = 0;
}
numElements = 0;
}

/// <summary>
/// 插入排序算法
/// </summary>
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();
}
}
}

class C_shape
{
static void Main()
{
CArray nums = new CArray(10);
Random rnd = new Random(100);
for (int i = 0; i < 10; i++)
{
nums.Insert(rnd.Next(0, 100));
}
Console.WriteLine("Before sorting:");
nums.DisplayElements();
Console.WriteLine("During sorting:");
nums.InsertionSort();
Console.WriteLine("After sorting:");
nums.DisplayElements();
Console.ReadKey();
}
}
}


运行结果:



结论:

冒泡排序,选择排序和插入排序的执行效率:

在数据较小时:选择排序和冒泡排序的执行效率相等,而插入排序则比其他两种算法速度的慢一倍。

在数据较大时:执行效率:选择排序>冒泡排序>插入排序,选择排序执行效率最高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: