数组排序、递归——(Java学习笔记二)
public static void main(String[] args) {
int[] arr = {5,8,9,12,55,565,421,12,2512,-5,-56};
sortMethod(arr);
p(arr);
}
//排序核心代码
private static void sortMethod(int arr[]) {
for(int i = 0 ;i<arr.length - 1;i++){
for(int j = i + 1;j<arr.length;j++){
if(arr[i] > arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
} //打印数组元素
static void p(int[] arr) {
String ret = "[";
for(int i = 0;i<arr.length;i++){
ret += arr[i];
if(i == arr.length - 1){
ret += "]";
}else{
ret += ",";
}
}
System.out.println("---------->"+ret);
public static void main(String[] args) {
int arr[] = {6,9,4589,442,458,5232,-788,7,545,-44,55,-11};
sortMethod(arr);
p(arr);
}
private static void p(int[] arr) {
String ret = "[";
for(int i = 0; i < arr.length; i ++){
ret += arr[i];
if( i == arr.length - 1){
ret += "]";
}else{
ret += ",";
}
}
System.out.println("---------->" + ret);
}
private static void sortMethod(int[] arr) {
for(int j = 1;j<arr.length;j++){
for(int i = 0; i <arr.length - j;i++){
if(arr[i] > arr[i + 1]){
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
}
//查找指定数组指定元素的索引值。
public static void main(String[] args) {
int[] arr = {5,4,231,45,75,45,11,-11,-21,-45};
int key = 45;
sortMethod(arr);
printSort(arr);
int index = binarySeach(arr,key,0,arr.length - 1);
System.out.println("----------->所求索引值:"+index);
}
//二分查找法核心代码
private static int binarySeach(int[] arr, int key,int fromIndex,int toInedx) {
//最小索引与最大索引
//fromIndex 表示从哪个位置开始查找,toIndex表示到那个位置结束
int minIndex = fromIndex,maxIndex = toInedx;
while(maxIndex >= minIndex){
//中间索引
int midIndex = (maxIndex + minIndex)/2;
//中间索引的值
int midIndexVal = arr[midIndex];
if(key > midIndexVal){
minIndex = midIndex + 1;
}else if(key < midIndexVal){
maxIndex = midIndex - 1;
}else{
return midIndex;
}
}
return -1;
}
//打印排序后的代码
private static void printSort(int[] arr) {
String ret = "[";
for(int i = 0;i<arr.length;i++){
ret +=arr[i];
if(i == arr.length - 1){
ret += "]";
}else{
ret += ",";
}
}
System.out.println("----------->排序:" + ret);
}
//对代码进行排序
private static void sortMethod(int[] arr) {
for(int j = 0;j<arr.length - 1;j++){
for(int i = 0;i<arr.length - j - 1;i++){
if(arr[i] > arr[i + 1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
数组的拷贝:
/**
*
* @author Essence
*arraycopy(Object src, int srcPos, Object dest,int destPos, int length)
*该方法接收四个参数
*object src :原数组,即被拷贝的数组
*int srcPos: 原数组的目标位置 即从哪个位置开始拷贝起
*Object dest:目标数组 即用来存储被拷贝的数组
*int destPos:目标数组中的起始位置,即向目标数组中插入数据的起始位置
*int length:要复制的元素数量
*/
public static void main(String[] args) {
String[] arr = {"A","B","C","D"};
String[] arr1 = new String[5];
System.out.println(Arrays.toString(arr1)); // 拷贝之前 : [null, null, null, null, null]
System.arraycopy(arr, 1, arr1,2, 3);
System.out.println(Arrays.toString(arr1)); //拷贝之后: [null, null, B, C, D] }
可变参数:
/**
* Java5 出现的新特性 参数可变
* 可变参数必须作为参数的最后一个参数 ,参数可以直接传递0到n个
*其本质上就是数组
* method(int ... arr)
* @author Essence
*
*/
public static void main(String[] args) {
int[] arr = {1,2,347,7,78,9};
System.out.println(getSum(arr));
/**
* 可变参数调用特点:
* getSum(1,2,34,5)
*/
System.out.println(getSum(1,2,34,5)); }
private static int getSum(int ... arr) {
int sum = 0;
for(int i = 0;i<arr.length;i++){
sum += arr[i];
}
return sum;
}
}
public class Demo{
public static void main(String[] args) {
long sum = factorial(10);
System.out.println(sum);
}
static long factorial(int n){
if(n==1){
return 1;
}else{
return n*factorial(n-1);
}
}
}
Java编程思想上的两个题斐波那契数列与吸血鬼数字
斐波那契数列:
/*
* 1,1,2,3,5,8,13,21,34
* 起那两个数是第三个数的和
* 斐波那契数列
* F(n) = F(n-1)+F(n-2)
*/
方法一:
private static void fibonacci(int n) {
int arr[] = new int[n],sum = 0;
arr[0] = arr[1] = 1;
for(int i = 2;i<arr.length;i++){
arr[i] = arr[i - 1] + arr[i-2];
System.out.println("arr["+i+"] "+arr[i]);
sum += arr[i];
}
System.out.println("斐波那契数列之和:" +sum);
}
方法二:
private static int sumFibonacci(int n) {
if(n<1){
return 1;
}else{
return sumFibonacci(n - 1) + sumFibonacci(n - 2);
}
}
private static void getFibonacci(int n) {
for(int i = 0;i <= n;i++){
int f = sumFibonacci(i);
System.out.print(f + "\t");
if(i%3 == 0){
System.out.println();
}
}
}
方法三:
private static void fibbonacci1(int n){
int a = 1,b = 1,c = 0 , sum = 0;
System.out.println(a+"\t"+b+"\t");
for(int i = 1;i<=n;i++){
c =a +b;
a = b;
b = c;
sum += c;
System.out.print(c+"\t");
if(i%3==0){
System.out.println();
}
}
System.out.println("斐波那契数列之和:" +sum);
}
吸血鬼数字:
/*
*1260=21*60
*1827=21*87
*2187=27*81
*/
1 private static void vampireNumber1() {
for(int i = 1;i<100;i++){
for(int j = 1;j<100;j++){
if(i*j>1000){
String a = i+""+j;
String b = i*j+"";
if(equals(a,b)){
System.out.println(i+"\t"+j+"\t"+i*j);
}
}
}
}
}
private static boolean equals(String a, String b) {
// TODO Auto-generated method stub
char[] aArrays ,bArrays;
aArrays = a.toCharArray();
bArrays = b.toCharArray();
Arrays.sort(aArrays);
Arrays.sort(bArrays);
if(Arrays.equals(aArrays,bArrays)){
return true;
}
return false;
}
数组排序、递归——(Java学习笔记二)的更多相关文章
- Java学习笔记二十九:一个Java面向对象的小练习
一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...
- Java学习笔记二:数据类型II
GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一 Java中的数据类型 Java ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- Java学习笔记二十七:Java中的抽象类
Java中的抽象类 一:Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- Java学习笔记二十四:Java中的Object类
Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...
- Java学习笔记二十二:Java的方法重写
Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
- Java学习笔记二十:Java中的内部类
Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...
随机推荐
- 【SICP读书笔记(四)】练习2.27 --- 表序列reverse的扩展:树结构的deep-reverse
题目要求是,修改练习2.18所做的reverse过程,得到一个deep-reverse过程.它以一个表为参数,返回另一个表作为值,结果表中的元素反转过来,其中的子树也反转. 例如: (define x ...
- Android_使用StrictMode
调试开发
本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/40076049 1.StrictMode简单介绍 自Android 2 ...
- [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...
- 【ThinkingInC++】53、构造函数,析构函数,全局变量
/** * 图书:[ThinkingInC++] * 特征:构造函数,析构函数,全局变量 * 时刻:2014年9一个月17日本18:07:43 * 笔者:cutter_point */ #includ ...
- 基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩 今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// ...
- Android更改checkbox的style
resouce文件夹下,value文件夹下,styles.xml文件中新增样式: <resources> <style name="radioButton"> ...
- Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor
1.错误描写叙述 信息: Setting autowire strategy to name 2014-7-13 1:37:43 org.apache.struts2.spring.StrutsSpr ...
- windows下一个erlang包装镜像启动
于linux环境,erlang经systools:make_script("",[])和systools:make_tar()命令生成图像包,安装镜像包,图片包的安装过程,通过替换 ...
- 编译命令行终端 swift
So, this is where swift lives, after you've installed XCode 6 Beta: /Applications/Xcode6-Beta.app/Co ...
- JAVA经BigDecimal圆角的解决方案及注意事项
/** * @Description: 四舍五入住宿2小数位数 * @param valueName * @return */ public static Double formateDouble45 ...