数据结构-二分排序算法

 二分排序算法,直接插入排序的变形版,向一个已排序队列中添加元素,添加完成后继续有序的方式进行;

class BinarySort
{
static void Main(string[] args)
{

int[] waitingArrats = new int[] { 15, 27, 36, 53, 4, 69, 87, 0, 88, 89, 90, 91, 6, 5 };
List<int> Datas = new List<int>();
foreach (int p in waitingArrats)
{
   Sort(Datas, p);//向有序队列添加新元素
}
foreach (var p in Datas)
{
Console.WriteLine(p);//打印排序结果

}
}

/// <summary>
/// 
/// </summary>
/// <param name="Datas"></param>
/// <param name="newvalue"></param>
static void Sort(List<int> Datas, int newvalue)
{
int low = 0;
int high = Datas.Count - 1;
int mid = (low + high) / 2;
int index = -1;
if (Datas.Count == 0)
{
Datas.Add(newvalue);
return;
}
while (low <= high)
{
if (newvalue <= Datas[mid])
{//新值在中间位左侧 
high = mid - 1;
}

//新值在中间位右侧 

if (newvalue > Datas[mid])
{
low = mid + 1;
}
mid = (high + low) / 2;
if (high < low) //当右指针越过中间位,大于左指针时停止
{
index = high + 1;//或者 low
Datas.Insert(index, newvalue);
break;
}
}

}
}

猜你喜欢

转载自www.cnblogs.com/mytrip/p/9475891.html