黑马程序员----五-数组

本文主要探讨了Java培训中涉及的编程基础、排序算法、折半查找等核心内容,并介绍了如何在数组中插入元素和进制转换的方法。通过具体实例深入浅出地解释了Java编程中的常见问题解决策略。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

==========================================
05-01-01
==========================================

1.获取最值
2.排序
     --选择0和1比,0和2比,0和3比,
 所以x=0;y=x+1  (x>y)
 x<arr.length-1
     --冒泡0和1比,1和2比,2和3比.
 所以x=0;y=0;   (y>y+1)
        y<arr.length-1-x (length-1也可以)
     --别的方法
 记录最大值,和最右边的值交换.
 
3.折半查找(二分查找)
{
  int min=0;
  int max=arr.length-1;
  int mid=(max+min)/2;
  while(arr[mid]!=key)
  {
        if(key>arr[mid])
 min=mid+1;
 else if(key<arr[mid])
 max=mid-1;
 if(max<min)
 return -1;
 mid=(max+min)/2;
  }
 return mid;
}

第二种方法
{
 int min=0;
 int max=arr.length-1;
 while(min<=max)
 {
 mid=(max+min)/2;
 if(key>arr[mid]
 min=mid+1;
 else if(key<arr[mid])
 max=mid-1;
 else
 return mid;
 }
 reutrn -1;
}

==========================================
05-01-10
==========================================

1.如果在数组里插入一个数,获取位置.
其实跟二分法是一样的道理,只要返回min就可以了.
2.如果用Array.binarySearch(arr,1);
可以直接查找,如果是没有的数,输出的就是插入位置index的复数-1,也就是如果要插到2位置,输出的就是-2-1=-3.

3.进制转换
整数int在内存中的体现形式为4个字节(byte),1个byte为8bit,所以是32bit.
但是如果是short,就是2个字节.
int n1=num&15;
sysout(n1);
num=num>>>4;
int n2=num&15;
sysout(n2);
n1=十六进制个位  n2=十六进制十位;

A是65 , a是97

 

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值