C# 二进制插入排序是如何工作的?
我知道二进制搜索是如何工作的,也知道插入排序是如何工作的,但这段代码是关于二进制插入排序的,我在理解它是如何工作的方面有问题C# 二进制插入排序是如何工作的?,c#,sorting,search,C#,Sorting,Search,我知道二进制搜索是如何工作的,也知道插入排序是如何工作的,但这段代码是关于二进制插入排序的,我在理解它是如何工作的方面有问题 static void Main(string[] args) { int[] b = BinarySort(new[] { 4, 3, 7, 1, 9, 6, 2 }); foreach (var i in b) Console.WriteLine(i); } public static int[] BinarySort(int[] li
static void Main(string[] args)
{
int[] b = BinarySort(new[] { 4, 3, 7, 1, 9, 6, 2 });
foreach (var i in b)
Console.WriteLine(i);
}
public static int[] BinarySort(int[] list)
{
for (int i = 1; i < list.Length; i++)
{
int low = 0;
int high = i - 1;
int temp = list[i];
//Find
while (low <= high)
{
int mid = (low + high) / 2;
if (temp < list[mid])
high = mid - 1;
else
low = mid + 1;
}
//backward shift
for (int j = i - 1; j >= low; j--)
list[j + 1] = list[j];
list[low] = temp;
}
return list;
}
在这里使用二进制搜索的目的是什么?
你能告诉我二进制插入排序是如何工作的吗?(c#控制台)
代码源:二进制插入排序与插入排序相同,但它将插入点的定位与实际插入分开 为数组实现的插入排序将在定位插入点的同时移动项。在遍历项目以找到插入点的同时,它还将移动项目以为插入腾出空间 二进制插入排序将利用已排序的项目已排序的事实,因此它可以使用二进制搜索来查找插入点。由于二进制搜索也不能移动项目来为插入腾出空间,因此必须在找到插入点后在单独的步骤中完成
您想要解释的代码是移动项目以为插入腾出空间的代码。有什么让人困惑的?你用调试器检查过了吗?@gunr217是的,但我不知道这段代码将如何对数据进行排序,以及二进制搜索的目的是什么?我在编辑中添加的源代码中没有关于它的信息。
//backward shift
for (int j = i - 1; j >= low; j--)
list[j + 1] = list[j];
list[low] = temp;