插入一个数,奇数在前偶数在后
思路1 开辟新数组
package com.tulun.src;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Arr {
public static void main(String[] args){
// 1 2 3 4 5 6 7
// 奇数在前 偶数在后
int[] arr = {1,2,3,4,5,6,7,8};
//思路1 开辟新数组
int[] brr = new int[arr.length];
int i=0;//遍历原数组
int left = 0;int right = brr.length - 1;
for(;i<arr.length;i++){
if(arr[i]%2 == 1){//奇数
brr[left++] = arr[i];
}else{
brr[right--] = arr[i];
}
}
System.out.println(Arrays.toString(brr));
}
}
思路2 交换(折半查找)
package com.tulun.src;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Arr {
public static void main(String[] args){
// 1 2 3 4 5 6 7
// 奇数在前 偶数在后
int[] arr = {1,2,3,4,5,6,7,8};
//思路2 交换
int i = 0,j =arr.length-1;
while (i+1<j){
while (i < j && arr[i]%2 ==1){
i++;
}
while (i < j && arr[j]%2 ==0){
j--;
}
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
package com.tulun.src;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Arr {
public static void main(String[] args){
// int[] arr =new int[]{1,2,3};
// int[] brr = new int[arr.length+1];
// for(int index = 0;index<arr.length;index++){
// brr[index] = arr[index];
// }
// brr[brr.length+1]=4;
// System.out.println(Arrays.toSting(brr));
// arr [1] = 100;
// System.out.println(Arrays.toSting(arr));
// System.out.println(arr[3]);
}
}
删除一个元素
package com.tulun.src;
import java.util.Arrays;
public class Arr1 {
/**
* arr:1 5 2 4 7 删除元素2
* Arrays.toString(arr) 1 5 4 7
*/
public static int[] Delete(int[] arr,int value){
int index = arr.length-1;
for(int i = 0;i<arr.length-1;i++){
if(value == arr[i]){
index = i;
break;
}
}
for(int j =index;j<arr.length-1;j++){
arr[j] = arr[j+1];
}
arr = Arrays.copyOf(arr,arr.length-1);
return arr;
}
public static void main(String[] args){
int[] arr = {1,5,2,4,7};
arr = Delete(arr,2);
System.out.println(Arrays.toString(arr));
}
}
删除重复元素(优化)
package com.tulun.src;
import java.util.Arrays;
public class Arr1 {
/**
* 删除重复元素
*/
/**
* 1.插入一个元素 当前数组有序
* 2.删除一个元素
*/
public static int[] insertValue(int[] arr,int value){
int scrLen = arr.length;//原数组长度
arr = Arrays.copyOf(arr,arr.length +1);
for(int i =0;i<scrLen;i++){//从前往后找第一个比value大的数,插入到当前数字前面
if(arr[i] > value){//移动元素
for(int j =scrLen-1;j>=i;j--){
arr[j+1] = arr[j];
}
arr[i] = value;//放值
return arr;
}
}
arr[arr.length] = value;
return arr;
}
/**
*@param arr
* @param value
* @return 返回value所在下标
*/
public static int search(int[] arr,int value){
for(int i = 0;i<arr.length;i++){
if(arr[i] == value){
return i;
}
}
return -1;
}
public static int[] delete(int[] arr,int value){
//1.查找value
int index = search(arr,value);
if(index < 0){
return arr;
}
//移动数据
for(int i = index;i<arr.length-1;i++){
arr[i] = arr[i+1];
}
//进行缩容
arr = Arrays.copyOf(arr,arr.length-1);
return arr;
}
public static void main(String[] args){
int[] arr = {2,2,12,1};
arr = deleteRepeatValue(arr,2);
System.out.println(Arrays.toString(arr));
}
}