数组排序、递归——(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).那为什么要将一个类定 ...
随机推荐
- List Set Map用法和区别
List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是.如图: Collection ├List │├LinkedList │├ArrayList │└Vec ...
- 桥模式设计模式进入Bridge
Abstraction:抽象部分的父类,定义须要实现的接口. 维护对实现部分的引用,从而把实现桥接到Implementor中去 Implementor:实现部分的接口 RefinedAbstracti ...
- java 注解 学习
周末闲来无事,想要研究一下注解方面的知识,曾经看过几次,都忘记了,这次学习下,而且写篇文章记录下, 1.元注解 元注解是指注解的注解.包含 @Retention @Target @Document ...
- (五岁以下儿童)NS3样本演示:桥模块演示样品csma-bridge.cc凝视程序
(五岁以下儿童)NS3:桥模块演示样品csma-bridge.cc凝视程序 1.Ns3 bridge模csma-bridge.cc演示示例程序的目光 // Network topology // // ...
- 苹果WatchKit轻松入门
背景 前段时间苹果Apple推出 WatchKit,用于开发Apple Watch应用,同时也推出了 Xcode6.2 Beta(非稳定版,好期待稳定版)版本用于开发 Watch App.Apple ...
- Leetcode - Jump Game Two
和Jump Game几乎相同的想法,他们是DP.关键是使用数组maxNumbers[k]储存的地方k步骤的话.序列号的最远范围,注阵maxNumbers[]它递增. class Solution { ...
- CSS 之 光进入光
一个.概念 css,层叠样式表(英语:Cascading Style Sheets.简写CSS).又称串样式列表.层次结构式样式表文件,一 种用来为结构化文档(如HTML文档或XML应用)加入样式(字 ...
- 第七章——DMVs和DMFs(3)——用DMV和DMF监控TempDB
原文:第七章--DMVs和DMFs(3)--用DMV和DMF监控TempDB 前言: 我们都知道TempDB是SQLServer的系统数据库,且SQLServer的日常运作严重依赖这个库.因此,监控T ...
- codeforces Round #259(div2) E解决报告
E. Little Pony and Summer Sun Celebration time limit per test 1 second memory limit per test 256 meg ...
- sql server 2008如何导入mdf,ldf文件
sql server 2008怎样导入mdf,ldf文件 网上找了非常多解决sql server导入其它电脑拷过来的mdf文件,多数是不全.遇到的解决方法不一样等问题,下边是找到的解决这个问题的最 ...