1)格式:修饰符 返回类型 方法名(参数列表){
方法逻辑体;
}
2)调用:方法名();
有参数的话传入相应的实参,无参数不写
3)常用方法
Scanner scanner=new Scanner(System.in);
Math.sqrt(4);//求根号4,返回的结果是double型
Math.random();//生成0~1之间的随机数
Math.max(2,3);//求俩个类型相同的数的最大值
Math.min(3,4);//求俩个类型相同的数的最小值
Math.abs(-9);//求一个数的绝对值
Math.round(4.5);//四舍五入
Math.floor(4.4);//向下取整
Math.ceil(3.7);//向上取整
Math.pow(2,3);//2的3次方
int[] a={1,2,3,4,5,6,7};
Arrays.sort(a);//排序
int[] b=Arrays.copyOf(a,9);//复制数组
Arrays.toString(a);//取元素
Arrays.equals(a,b);//比较俩个数组是否一致
4)方法重载:方法名相同,参数类型和个数不同
5)形参:定义方法时,参数列表里的形式参数
实参:调用方法时,传入的参数
1)排序
package com.neuedu.seventeen;
import java.util.Arrays;
/**
* 冒泡排序
* 从小到大的排序
* 任意俩个相邻的位置比较,先比好的是最大的,放到最后面
*/
public class BubbleSort {
public static void main(String[] args) {
int[] a={12,3,55,3,2};
// 进行比较
//第一次进行N-1次比较,以后依次递减1
//按址传递
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for (int x : a) {
System.out.print(x+" ");
}
}
}
package com.neuedu.seventeen;
/**
* 选择排序
* 第一个与之后的所有的比,小的往前
* 拍好后,第二给与之后的比,小的往前
* 以此类推
*/
public class SelectSort {
public static void main(String[] args) {
int[] a={12,4,2,5,7,21,1};
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
if (a[j]
package com.neuedu.seventeen;
/**
* 插入排序
* 从第二个数开始,与第一个比较,小于它往前挪,大于它不动
* 再看第三个数,小于第二个,交换,小于第一个再交换
* 以此类推
* 不好理解 动图:E:\图片
*/
public class InsertSort {
public static void main(String[] args) {
int[] a={234,21,3,13,2432,2,45};
for (int i = 1; i < a.length; i++) {//因为认为第一个元素是已经排好序的
for (int j = i; j >0; j--)
if(a[j] < a[j-1]) {
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
for (int i : a) {
System.out.print(i+" ");
}
}
}
2)二分查找
package com.neuedu.seventeen;
import java.util.Scanner;
/**
* 二分查找
*/
public class BinarySearch {
public static void main(String[] args) {
int[] a=new int[]{2,4,5,6,7,8,9};
int left=0;//代表左边那个数的数组下标
int right=a.length-1;
System.out.println("请输入要查找的数");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
while (true){
int middle=(left+right)/2;//中间数的下标
if (x==a[middle]){
System.out.println("找到了");
break;
}else if(x>a[middle]){
left=middle+1;
}else {
right=middle-1;
}
if (a[right]!=x&&a[left]!=x){
System.out.println("没有这个数");
break;
}
}
}
}
3)递归
package com.neuedu.test;
/**
* 递归
* 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
*/
public class Recuision {
static int digui(int x){
if (x > 2) {
return digui(x - 1) + digui(x - 2);
} else if(x<=0){
return -1;
}else{
return 1;
}
}
public static void main(String[] args) {
// 另一种方法
/*int a=1;
int b=1;
int f=0;
for (int i = 2; i < 40; i++) {
f=a+b;
a=b;
b=f;
}
System.out.println(f);*/
System.out.println(digui(40));
}
}
1) 值传递
2)址传递