JAVA常用数值算法,何光渝的光盘代码,谁能给我一套下载,传到CSDN下载频道就可以,我赠送可用分(没什么可回报的). JAVA常用数值算法,何光渝的光盘代码,谁能给我一套下载,传到CSDN下载频道就可以,我赠送可用分(没什么可回报的).谢谢现在只能搜到PDG格式的电子书,那阅读器不爽. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System; namespace MinABS{ class Program { static void Main(string[] args) { int n = 10; int[] a = new int[n]; Random rand = new Random(); int min = int.MaxValue; int max = int.MinValue; Console.WriteLine("产生了" + n + "个数据的实验数组,"); for (int i = 0; i < n; i++) { //赋值并且取到最大最小值 //a[i] = rand.Next(int.MinValue, int.MaxValue); a[i] = rand.Next(-100, 0); if (a[i] < min) { min = a[i]; } if (a[i] > max) { max = a[i]; } Console.Write(a[i] + " "); } Console.WriteLine("在O(n)内得到最大最小分别是:"); Console.WriteLine(max + "和" + min); long offset = (long)max + Math.Abs((long)min); //规划数组的长度。每个byte有16位长 int len = (int)(offset >> 4) + 1; Byte[] B = new Byte[len]; int kkkk = 0; bool IsSame = false;//是否有重合点标记 //O(n)的时间内分配到了Byte[]中。 for (int i = 0; i < n; i++) { offset = (long)a[i] - (long)min; int index = (int)(offset >> 4); int temp = B[index]; //把末k位变成1 //把右数第k位变成1 | (101001->101101,k=3) x | (1 << (k-1)) int tempOffSet = (1 << (int)(offset & 15)); //判断重复 if (!IsSame) { kkkk = temp & tempOffSet; if ((temp & tempOffSet) >= 1) { IsSame = true; //如果题目条件是有重复点就退出,那么在这里就跳吧。 //为了多练习,我排除了重复点距离是0的情况。 } } //temp |= (1 << ((int)(offset & 15))); //temp |= tempOffSet; B[index] |= (byte)tempOffSet; } //最小距离初始为最大。 long minABS = long.MaxValue; long lastIndex = -1; //在常数范围内循环,复杂度不增加。最坏的情况是32*int.MaxValue次。 for (int i = 0; i < B.Length; i++) { Console.WriteLine(Convert.ToString((1 << 20) | B[i], 2)); } for (int i = 0; i < B.Length; i++) { //if (B[i] == 0) { continue; } //在常数范围内循环,复杂度不增加。 for (int k = 0; k < 16; k++) { if (((B[i] >> k) & 1) == 1) { if (lastIndex >= 0) { long temp = (i << 4) + k - lastIndex; if (temp < minABS) { minABS = temp; } } lastIndex = (i << 4) + k; Console.WriteLine("索引是:" + i + " " + lastIndex + ":" + (lastIndex + min)); } } } if (IsSame) { Console.WriteLine("有重合点"); } else { Console.WriteLine("无重合点"); } Console.WriteLine("不考虑重合最小距离是:" + minABS); Console.WriteLine("总复杂度是:O(n)"); // Console.WriteLine(Convert.ToString(1<<20 , 2)); for (int i = 0; i < B.Length; i++) { Console.WriteLine(Convert.ToString((1 << 20) | B[i], 2)); } Console.ReadLine(); } }} 这本书我没有,如果楼主喜欢数值算法方法的书籍的话,我建议可以去看一下《Java 数值方法》一本挺有趣而且相当不错的书,在其网站上也有源代码下载的,而且作者提供了两套代码:一套是控制台运行的,还是一套就是将算法做成了可视化的 Applet,更形象地描述算法。 string str = "中文字符串"; byte[] bytes = Encoding.Default.GetBytes(str); string strBytes = string.Empty; for (int i = 0; i < bytes.Length; i++) { strBytes += Convert.ToString(bytes[i], 2); } byte[] B = new byte[strBytes.Length/8]; int j = 0; for (int k = 0; k < strBytes.Length; ) { string a = strBytes.Substring(k, 8); B[j] = Convert.ToByte(a, 2); k = k + 8; j++; } Console.WriteLine("结果:" + Encoding.Default.GetString(B)); Console.ReadLine(); 怎样设计java可拖动窗体,类似eclipse的界面 DatagramSocket 接收数据包超时,这是一个ICMP包(也就是PING包) String和StringBuffer的问题 有没有返回当前月的总天数的方法? 三点概念的理解不明,望指教 帮帮新手,谢谢了 问:抽象方法、静态方法、普通方法的区别? JFrame和JDialog有何区别? 请问关于JAVA中访问权限的问题 奇怪的问题 java throw问题,为什么为什么?抓狂了 List和String[]之间如何强砖?
namespace MinABS
{
class Program
{
static void Main(string[] args)
{
int n = 10;
int[] a = new int[n];
Random rand = new Random();
int min = int.MaxValue;
int max = int.MinValue;
Console.WriteLine("产生了" + n + "个数据的实验数组,");
for (int i = 0; i < n; i++)
{
//赋值并且取到最大最小值
//a[i] = rand.Next(int.MinValue, int.MaxValue);
a[i] = rand.Next(-100, 0);
if (a[i] < min) { min = a[i]; }
if (a[i] > max) { max = a[i]; }
Console.Write(a[i] + " ");
}
Console.WriteLine("在O(n)内得到最大最小分别是:");
Console.WriteLine(max + "和" + min);
long offset = (long)max + Math.Abs((long)min);
//规划数组的长度。每个byte有16位长
int len = (int)(offset >> 4) + 1;
Byte[] B = new Byte[len];
int kkkk = 0;
bool IsSame = false;//是否有重合点标记
//O(n)的时间内分配到了Byte[]中。
for (int i = 0; i < n; i++)
{
offset = (long)a[i] - (long)min;
int index = (int)(offset >> 4);
int temp = B[index];
//把末k位变成1
//把右数第k位变成1 | (101001->101101,k=3) x | (1 << (k-1)) int tempOffSet = (1 << (int)(offset & 15)); //判断重复
if (!IsSame)
{
kkkk = temp & tempOffSet;
if ((temp & tempOffSet) >= 1)
{
IsSame = true;
//如果题目条件是有重复点就退出,那么在这里就跳吧。
//为了多练习,我排除了重复点距离是0的情况。
}
}
//temp |= (1 << ((int)(offset & 15)));
//temp |= tempOffSet;
B[index] |= (byte)tempOffSet;
}
//最小距离初始为最大。 long minABS = long.MaxValue;
long lastIndex = -1; //在常数范围内循环,复杂度不增加。最坏的情况是32*int.MaxValue次。
for (int i = 0; i < B.Length; i++)
{
Console.WriteLine(Convert.ToString((1 << 20) | B[i], 2));
}
for (int i = 0; i < B.Length; i++)
{
//if (B[i] == 0) { continue; }
//在常数范围内循环,复杂度不增加。
for (int k = 0; k < 16; k++)
{
if (((B[i] >> k) & 1) == 1)
{
if (lastIndex >= 0)
{
long temp = (i << 4) + k - lastIndex;
if (temp < minABS)
{
minABS = temp;
} }
lastIndex = (i << 4) + k;
Console.WriteLine("索引是:" + i + " " + lastIndex + ":" + (lastIndex + min));
}
}
}
if (IsSame)
{ Console.WriteLine("有重合点"); }
else
{ Console.WriteLine("无重合点"); } Console.WriteLine("不考虑重合最小距离是:" + minABS);
Console.WriteLine("总复杂度是:O(n)");
// Console.WriteLine(Convert.ToString(1<<20 , 2));
for (int i = 0; i < B.Length; i++)
{
Console.WriteLine(Convert.ToString((1 << 20) | B[i], 2));
}
Console.ReadLine(); }
}
}
一本挺有趣而且相当不错的书,在其网站上也有源代码下载的,而且作者提供了两套代码:一套
是控制台运行的,还是一套就是将算法做成了可视化的 Applet,更形象地描述算法。
{
strBytes += Convert.ToString(bytes[i], 2);
}
byte[] B = new byte[strBytes.Length/8];
int j = 0; for (int k = 0; k < strBytes.Length; )
{
string a = strBytes.Substring(k, 8);
B[j] = Convert.ToByte(a, 2);
k = k + 8;
j++;
} Console.WriteLine("结果:" + Encoding.Default.GetString(B));
Console.ReadLine();