一维数组习题
- 给有序数组中添加元素并使其排序:
public class TestDemo {
public static int[] insertValue(int[] arr,int value){
int srcLen=arr.length ;//原始数组长度
arr=Arrays.copyOf(arr,arr.length+1);
for(int i=0;i<srcLen;i++){
//从前向后找找第一个比value大的数,插入到当前数字前面
if(arr[i]>value){
//移动元素
for(int j=srcLen-1;j>=i;j--){
arr[j+1]=arr[j];
}
//放值
arr[i]=value;
return arr;
}
}
arr[arr.length-1]=value;
return arr;
}
public static void main(String[] args){
int[] arr={1,3,4};
arr=insertValue(arr,9);
System.out.println(Arrays.toString(arr));
}
}
2.删除数组中的某个元素:
public class TestDemo {
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;
}
//2.移动数据
for(int i=index;i<arr.length-1;i++){
arr[i]=arr[i+1];
}
//3进行缩容
arr=Arrays.copyOf(arr,arr.length-1);
return arr;
}
public static void main(String[] args){
int[] arr={2,4,3,1,6,8,0,9};
arr=delete(arr,3);
System.out.println(Arrays.toString(arr));
}
}
3.删除数组中重复元素:
public class TestDemo {
public static int[] deleteRepeeatValue(int[] arr,int value){
for(int i=0;i<arr.length ;){
if(arr[i]==value){
//数据移动
for(int j=i;j<arr.length-1;j++){
arr[j]=arr[j+1];
}
arr=Arrays.copyOf(arr,arr.length-1);
}else{
i++;
}
}
return arr;
}
public static void main(String[] args){
int[] arr={2,2,2,2,0};
arr=deleteRepeeatValue(arr,2);
System.out.println(Arrays.toString(arr));
}
}
4.二分(折半)查找:
public class TestDemo {
public static int binarySearch(int[] arr,int value) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int midIndex = (left + right) / 2;
if (arr[midIndex] > value) {
right = midIndex - 1;
} else if (arr[midIndex]<value){
left=midIndex+1;
}else{
return midIndex;
}
}
return -1;
}
public static void main(String[] args){
int[] arr={1,3,6,7,9};
int value=binarySearch(arr,9);
System.out.println(value);
}
}
5.冒泡排序法:
public class TestDemo {
public static int[] bubbleSort(int[] arr){
for(int i=0;i<arr.length;i++){//i控制趟数
for(int j=arr.length-1;j>i;j--){
if (arr[j]<arr[j-1]){
int temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
return arr;
}
public static void main(String[] args){
int[] arr={4,5,2,8,3,1} ;
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
}