数组 - 复制1
[数组的复制-----浅复制]
//源数组
String[] names = {"泷泽萝拉","深田咏美","冲田杏梨"};
//新数组
String[] newNames = names;
names[1] = "李飞";
//遍历新数组
for(String name:newNames){
System.out.println(name);
}
缺点:修改原数组后,新数组的数据也发生了变换
数组 - 复制2
数组的复制-----深复制
//源数组
String[] names = {"泷泽萝拉","深田咏美","冲田杏梨"};
//新数组
String[] newNames = new String[names.length];
//数据的迁移
for(int i = 0;i<names.length;i++){
newNames[i] = names[i];
}
names[1] = "李飞";
//遍历新数组
for(String name:newNames){
System.out.println(name);
}
}
数组–扩容
//源数组
String[] names = {"泷泽萝拉","深田咏美","冲田杏梨"};
//新数组
String[] newNames = new String[names.length*2];
//数据的迁移
for(int i = 0;i<names.length;i++){
newNames[i] = names[i];
}
//把新数组的内存地址赋值给源数组
names = newNames;
//遍历源数组
for(String name:names){
System.out.println(name);
}
注:数组一旦初始化就固定了长度,我们所说的扩容都是声明一个新的数组 ,然后迁移数据,讲新的数组地址指向原数组;
数组----查找
冒泡排序
/**口诀:
N个数字来排序
两两相比小靠前
外层循环N-1
内层循环N-1-i
*/
int[] is = {38,24,5,62,41,57};
//冒泡排序
for(int i = 0;i<is.length-1;i++){
for(int j = 0;j<is.length-1-i;j++){
if(is[j] > is[j+1]){
int temp = is[j];
is[j] = is[j+1];
is[j+1] = temp;
}
}
}
几种简单排序:https://blog.csdn.net/qq_35661171/article/details/78425261
数组 - 查找
/**
数组 - 查找
1.顺序查找:从头到尾遍历查找元素
int[] is = {38,24,5,62,41,57};
int num = 62;
for(int i = 0;i<is.length;i++){
if(is[i] == num){
System.out.println("查找到元素了");
}
}
2.二分法查找
前提:先排序,再查找
精髓:把数组一分为二的查找,效率要比顺序查找高
*/
int[] is = {38,24,5,62,41,57};
int num = 5;
//排序:5,24,38,41,57,62
Arrays.sort(is);
int start = 0;
int end = is.length-1;
while(start <= end){
int mid = (start + end)/2;
if(num < is[mid] ){
end = mid-1;
}else if(num > is[mid]){
start = mid+1;
}else{
System.out.println("查找到元素了");
break;
}
}
数组----删除
数组 - 删除1
缺点:会让源数组的长度越来越短
//源数组
String[] names = {"泷泽萝拉","深田咏美","冲田杏梨"};
//新数组
String[] newNames = new String[names.length-1];
//数据的迁移
int index = 0;//新数组的下标
for(int i = 0;i<names.length;i++){
if(i != 1){
newNames[index] = names[i];
index++;
}
}
//把新数组的地址赋值给源数组
names = newNames;
//遍历源数组
for(String name:names){
System.out.println(name);
}
数组 - 删除2
//源数组
String[] names = {"泷泽萝拉","深田咏美","冲田杏梨","铃原爱蜜莉","波多野结衣"};
//数据的迁移
for(int i = 1;i<names.length-1;i++){
names[i] = names[i+1];
}
names[names.length-1] = null;
//遍历源数组
for(String name:names){
System.out.println(name);
}