3
我知道二進制搜索是如何工作的,並且知道插入排序如何工作,但是這個代碼是關於二進制插入排序的,並且我在理解它的工作方式方面存在問題。二進制插入排序如何工作?
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;
}
我不明白這是什麼做的部分:
//backward shift
for (int j = i - 1; j >= low; j--)
list[j + 1] = list[j];
list[low] = temp;
,什麼是這裏使用二進制搜索的目的是什麼? 你能告訴我二進制插入排序是如何工作的嗎? (C#控制檯)
這有什麼困惑嗎?你用調試器完成了它嗎? – gunr2171 2014-10-19 20:12:32
@ gunr2171是的,但我不知道這段代碼如何對數據進行排序,這裏的二進制搜索的目的是什麼?在編輯中添加的源代碼中沒有關於它的信息。 – 2014-10-19 20:16:16