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

C# 二分法查找和排序

2016-09-22 21:03 459 查看
using System;
using System.Collections.Generic;
using System.Text;

namespace AAA
{
public class Dichotomy
{
public static void DichotomySort(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
int start = 0;

int end = i - 1;

int middle = 0;

int temp = array[i];

while (start <= end)
{
middle = (start + end) / 2;

if (array[middle] > temp)//要排序元素在已经排过序的数组左边
{
end = middle - 1;
}
else
{
start = middle + 1;
}
}
for (int j = i - 1; j > end; j--)//找到了要插入的位置,然后将这个位置以后的所有元素向后移动
{
array[j + 1] = array[j];
}

array[end + 1] = temp;

}
}

public static long DichotomySearch(long[] array, long key, long high, long low)
{
long middle = 0;

if (high < low)
{
return -1;
}

middle = (low + high) / 2;

if (array[middle] == key)
{
return middle;
}
else if (array[middle] > key)
{
return DichotomySearch(array, key, middle - 1, low);
}
else
{
return DichotomySearch(array, key,high, middle + 1);
}
}
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: