插入排序
/**
* 插入排序
*/
public static void main(String[] args) {
int[] arr = new int[]{8,5,6,4,9,7,2,1,3,2};
//数组遍历的次数
for (int i = 1; i <arr.length; i++) {
//提取出来的数
int n=arr[i];
//比较数位置
int j =i;
//j!=0因为这边j如果等于零的话他就会报异常,当index=0时,那么0-1不就等于-1了吗,所以这边时超出异常!
while (j>0&&n<arr[j-1]){
arr[j]=arr[j-1];
j--;
}
//装第一次吧n拿出来的那个数,然后又放到j里面去
arr[j]=n;
System.out.println(Arrays.toString(arr));
}
}
二分查找
/**
* 二分查找
*/
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8};
int key = 9;
//开始位置
int begin = 0;
//结束位置
int end = array.length - 1;
//找到的位置
int position = -1;
//如果开始位置小于等于结束位置,继续查找
while(begin <= end){
//计算中间位置
int middle = (begin + end) / 2;
//将中间数和查找数进行比较
if(key == array[middle]){
//找到了
position = middle;
break;
}else if(key > array[middle]){
//查找数比中间数大,就淘汰中间数前面的所有数
begin = middle + 1;
}else{
//查找数比中间数小,就淘汰中间数后面的所有数
end = middle - 1;
}
}
if(position != -1){
System.out.println("查找数的位置: " + position);
}else{
System.out.println("没有找到");
}
}
数组取反
/**
* 数组元素反转
* @param args
*/
public static void main1(String[] args) {
/**
* 实现数组的反转。
* 方式一:临时变量
* 方式二:创建一个新的数组,倒序遍历旧数组中的元素,然后按照顺序复制给新数组,
* 然后再把新数组的值复制到旧数组当中
* 方式三:创建一个新数组,长度是旧数组的长度。将旧数组倒序遍历获取数组中的元素
* 拿到元素之后从头开始赋值给新数组当中,最后将新数组的地址值赋值给旧数组
*
*/
//1、
String[] str = new String[]{"AA","BB","CC","DD","EE","FF","GG"};
/*for(int i = 0; i < str.length / 2; i++){
String temp = str[i];
str[i] = str[str.length - i - 1];
str[str.length - i - 1] = temp;
System.out.println(Arrays.toString(str));
}*/
//2、
/*for(int i = 0,j = str.length - 1; i < j; i++,j--){
// 交换
String temp = str[i];
str[i] = str[j];
str[j] = temp;
System.out.println(Arrays.toString(str));
}*/
//3、
String[] newArr = new String[str.length]; // 创建新数组,数组的长度是旧数组的长度
for (int i = str.length - 1, j = 0; i >= 0; i--, j++) {
newArr[j] = str[i];
}
// 循环完毕之后,切记要将newArr数组的地址值赋值给str数组
str = newArr;
// 遍历str数组,查看是否反转了
for(int i = 0; i < str.length; i++){
System.out.print(str[i] + " ");
}
}
两个同种类型数组合并
/**
* 两个数组合并
* @param args
*/
public static void main(String[] args) {
//方法二 循环遍历
// 两个数组合并
String[] str1 = {"Hello","world","java"};
String[] str2 = {"Veriable","syntax","interator"};
String[] newStr = new String[str1.length+str2.length];
//newStr = str1;数组是引用类型
for(int x=0;x<str1.length;x++){
newStr[x] = str1[x];
}
for(int y=0;y<str2.length;y++){
newStr[str1.length+y]=str2[y];
}
for(int y=0;y<newStr.length;y++){
System.out.println(newStr[y] + " ");
}
}