前言
本篇文章主要介绍了数组的增删查寻操作。
一、增加一个元素
增加元素有两种方法,一种是从前往后,首先是从前往后遍历,找到第一个不大于要插入元素的位置,再从size后往前遍历到index,是的arr[i]=arr[i-1],最后插入元素。
代码如下
public int increase1(int arr[],int size,int val){
//首先判断数组容量是否支持插入一个新的元素
if(size>arr.length){
return -1;
}
int index = 0;
//从前往后遍历,寻找位置
for(int i=0;i<size;i++){
if(arr[i]>val){
index=i;
break;
}
}
从后往前遍历移动元素
for(int i=size;i>index;i--){
arr[i]=arr[i-1];
}
arr[index]=val;
return index;
}
第二种方法是直接从后往前遍历,一边移动一边寻找,不大于要插入元素的位置
代码如下
public int increase(int []arr , int size, int val){
if(size>arr.length){
return -1;
}
int index=-1;
for(int i=size;i>0;i--){
if(arr[i-1]>val) {
arr[i]=arr[i-1];
}else {
index=i;
break;
}
}
arr[index]=val;
return index;
}
二、查找一个元素
遍历整个数组,查找与之相等的值,返回下标index
代码如下
public int findelement(int arr[],int size,int val ){
for(int i=0;i<size;i++){
if(arr[i]==val){
return i;
}
}
return -1;
}
三、删除一个元素
只能从前往后寻找,找到要删除元素的位置,再移动
代码如下
public int deleteDlement(int arr[], int size, int val) {
int index = -1;
for (int i = 0; i < size; i++) {
if (arr[i] == val) {
break;
}
}
for (int i = index + 1; i < size; i++) {
arr[i - 1] = arr[i];
}
if (index == -1) {
return size;
}
return --size;
}
四、数据单调性
同时生命递增为真,递减为真,若遍历时不满足为置假
public boolean isMonotonic(int[] nums) {
boolean inc=true,des=true;
for(int i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
}else if(nums[i]<nums[i+1]){
des=false;
}else{
inc=false;
}
}
return inc||des;
}
五、合并两个数组
从后往前遍历,较大的元素开始存放
代码如下
public void merge(int[] nums1, int m, int[] nums2, int n) {
int temp=m+n-1;
while(temp>=0){
if(m>0&&n>0){
if(nums1[m-1]>nums2[n-1]){
nums1[temp--]=nums1[m-1];
m--;
}else{
nums1[temp--]=nums2[n-1];
n--;
}
}else{
break;
}
}
while(n>0){
nums1[temp--]=nums2[n-1];
n--;
}
}
总结
本篇文章主要分享了简单的数组的增删查操作,以及单调性和数组合并。主要学到的思想是,如何把握好临界值。