首页 > 搜索 > 算法(第三版),计算机算法设计与分析(第3版)课后习题答案2

算法(第三版),计算机算法设计与分析(第3版)课后习题答案2

互联网 2020-10-30 01:03:44
在线算命,八字测算命理

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

namespace finddata

{

class Program

{

static int _BinarySearch(int[] arr, int N_search)

{

int len = arr.Length;

int left = 0;

int right = len - 1;

if (len > 0 && N_search >= arr[0])

{

while (left < right)

{

int middle = (left + right + 1) / 2;

if (N_search < arr[middle])

{

right = middle - 1;

}

else

{

left = middle;

}

}

if (N_search == arr[left])

return left;

}

return -1;

}

static void Main(string[] args)

{

int[] inputlist = new int[5];//接收用户输入的数组

int position;

int[] templist = new int[6];

int num;

Console.WriteLine("\n请向数组输入5个数(输入回车换行;回车结束输入):");

for (int i = 0; i < inputlist.Length; i++)

{

inputlist[i] = Convert.ToInt32(Console.ReadLine());

}//接收一个数组

for (; ; )

{

Console.Write("\n请输入一个需要查询的数:");

num = Convert.ToInt32(Console.ReadLine());//获取要查询的数据

int f = _BinarySearch(inputlist, num);

//在数组数据范围内,判断是否是数组一员

if (f != -1)

{

Console.WriteLine("\n" + num + "位于数组(位置是1~5)的第:{0}位", f + 1);

}

else

{

ArrayList arrylist = new ArrayList(inputlist);//建一个动态数组

arrylist.Add(num);

arrylist.Sort();

for (int i = 0; i < arrylist.Count; i++)

{

templist[i] = Convert.ToInt32(arrylist[i]);

}

position = _BinarySearch(templist, num);

if (position == 0 )

{

Console.WriteLine("\n{0}(min)<[数组最小元素:{1}]。位置:数组元素(位置1~5)第[{2}]之前!", num,templist[position +1], position +1);

}

else if (position == templist.Length-1)

{

Console.WriteLine("\n{0}(max)>[数组最大元素:{1}]。位置:数组元素(位置1~5)第[{2}]之后!", num, templist[position-1], position );

}

else

{

Console.WriteLine("\n位于数组元素:[{0},{1}]之间。位置:(位置1~5)即第[{2}]与第[{3}]之间!", templist[position - 1], templist[position + 1], position, position + 1);

}

}

}

}

}

}

免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多