/**
* 选择排序:基本思想是选取比较第一次选取数组中的最小值然后跟比较的值交换位置即可
* @param a
*/
public void selectP(int[] a){
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[i]>a[j]){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
System.out.println("选择排序:"+Arrays.toString(a));
}
/**
* 冒泡排序:基本思想是循环a.length-1次比较相邻的两个数大小,然后从小到大交换位置,
* @param b
*/
public void maoPao(int[] a){
for(int i =0;i<a.length;i++){
for(int j = i;j<a.length;j++){
if(a[i]>a[j]){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
System.out.println("冒泡排序:"+Arrays.toString(a));
}
/**
* 插入排序:是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。
* @param a
*/
public void Insert(int[] a){
//假设{1,5,4,3,6,2}
for(int i=1;i<a.length;i++){
//那么我从第二个位置遍历,
int key = a[i];//key值为5
int j = i - 1; //然后去到它前面的一个位置
while(j>0&&key<a[j]){
a[j+1] = a[j];//把a[j]的值后移
j--;
}
a[j+1] = key; //将当前值插入
}
System.out.println("插入排序:"+Arrays.toString(a));
}
a. 数组的声明
int[] a = {...}
int[] a = new int[10];大小固定
new int[]{...}
int[] a;
数组名是数组的地址
b.数组内存分配,弄清楚什么是引用
c.案例
写一个程序倒置一个数组
i.直接在主函数中操作
第一个和最后一个交换
第二个和倒数第二个交换
ii.写成函数来操作
对任意的一个数组做倒置
任意的一个数组应该找一个形式参数来代替
形式参数是数组该怎么写,
调用的时候怎么传递数组
要不要有返回值呢?数组作为返回值应该如何写
数据类型 : 基本数据类型 引用类型
数组的复制拷贝扩容
System.arraycopy
Arrays.copyof
数组的排序
1.选择排序 2.冒泡排序 3.插入排序
4.java提供的排序
测试时间System.currentTimeMillis()
二维数组
二维数组由多个一维数组组成
二维数组的长度是其含有一维数组的元素的个数。
多维数组
三维数组是由多个二维数组组成的
三维数组的长度是其中二维数组的个数
求一个数字的阶乘
f(n) = f(n-1)*n(到文件操作有具体的使用)
了解String(字符串)