using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IComparableDemo
{
/// <summary>
/// 有关汽车相关信息的实体类
/// </summary>
public class Car
{
private int carNum = 0; //编号
public int CarNum
{
get { return carNum; }
set { carNum = value; }
}
private string carBrand = ""; //品牌
public string CarBrand
{
get { return carBrand; }
set { carBrand = value; }
}
private string carType = ""; //型号
public string CarType
{
get { return carType; }
set { carType = value; }
}
private string carDesc = ""; //描述
public string CarDesc
{
get { return carDesc; }
set { carDesc = value; }
}
/// <summary>
/// 构造函数
/// </summary>
public Car() { }
/// <summary>
/// 带参构造函数
/// </summary>
/// <param name="carBrand">品牌号</param>
public Car(string carBrand)
{
this.CarBrand = carBrand;
}
/// <summary>
/// 带参构造函数
/// </summary>
/// <param name="number">车牌号</param>
/// <param name="brand">品牌</param>
/// <param name="type">型号</param>
/// <param name="heft">重量</param>
/// <param name="widht">宽度</param>
/// <param name="desc">描述</param>
public Car(int num, string brand, string type, string desc)
{
this.carNum = num;
this.carBrand = brand;
this.carType = type;
this.carDesc = desc;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace IComparableDemo
{
/// <summary>
/// 有关对于汽车操作的相关类
/// </summary>
public class CarUtils
{
//生产的所有汽车
public List<Car> carFactory = new List<Car>();
#region 生产汽车的方法
/// <summary>
/// 生产汽车的方法
/// </summary>
/// <param name="car">汽车</param>
public void CreateCar(Car car)
{
carFactory.Add(car);
}
#endregion
#region 根据品牌查询车
/// <summary>
/// 根据品牌查询车
/// </summary>
/// <param name="carBrand">品牌</param>
/// <returns>汽车</returns>
public Car GetCarByBrand(string carBrand)
{
//对于Car进行CarBrand排序
carFactory.Sort(new CarBrandDesc());
//二分法查询指定品牌的汽车
return GetCarTheBrand(Handler(carFactory.Count), carBrand);
}
/// <summary>
/// 二分法查询指定对象
/// </summary>
/// <param name="index">二分数下标</param>
/// <param name="carBrand">品牌名</param>
/// <returns>该对象</returns>
public Car GetCarTheBrand(int index, string carBrand)
{
if (carFactory[index].CarBrand.CompareTo(carBrand) == 0) //获得指定的对象
{
return carFactory[index];
}
else if ((index == 0 && !carFactory[index].CarBrand.Equals(carBrand)) || (index == carFactory.Count && !carFactory[index].CarBrand.Equals(carBrand)) || index > carFactory.Count)
{
return null; //判断没有找到
}
else if (carFactory[index].CarBrand.CompareTo(carBrand) < 0) //判断是否小于二分后的对象
{
GetCarTheBrand(Handler(index) + index, carBrand);
}
else if (carFactory[index].CarBrand.CompareTo(carBrand) > 0) //判断是否大于二分后的对象
{
GetCarTheBrand(Handler(index), carBrand);
}
return null;
}
#endregion
#region 二分法奇偶数据处理
/// <summary>
/// 二分法奇偶数据处理
/// </summary>
/// <param name="center">中间数</param>
/// <returns>二分后的中间数</returns>
public int Handler(int center)
{
//技术中间数
if (center % 2 == 0)
{
return center / 2;
}
else
{
return center / 2 + 1;
}
}
#endregion
}
#region 按照品牌排序的比较器
public class CarBrandDesc : IComparer<Car>
{
#region 按照品牌排序
int IComparer<Car>.Compare(Car x, Car y)
{
return x.CarBrand.CompareTo(y.CarBrand);
}
#endregion
}
#endregion
}