数组常用算法举例加解释(第一篇)
一,插入算法
一个数组有序,在添加一个元素后,求数组依然有序
//先定义一个数组(如要添加元素,咱们得在元素末尾空出来一个预备位0),顺便定义要加入的元素t
intj
= arr.length-1;
j
> loc;
j--
int []a=new int[]{1,3,7,9,12,20,0};
int t=8;
//首先咱们得找到该元素 的位置排在第几位:让t和数组中的每一个元素 依次 参与比较 直到遇到恰好比他大的那个元素
int loc=-1; //表示t应该在的位置
for(int i=0; i<a.length-1;i++){
if(a[]>=t){
loc=i;
break;
}
}
//如果没找到合适位置
if(loc<0){
a[a.length-1]=t;
}else{ //其它元素依次后移
for(){
a[j]=a[j-1];
}
//添加插入的值
a[loc] = t;
}
for(int i = 0;i<arr.length;i++){ //验证
System.out.print(arr[i]+"\t");
}
二,删除算法
一个有序的数组,删除一个元素后依然有序
int []a={1,3,7,9,12,20};
int t=1;
//1,找位置
int loc=-1;
for(int i=0;i<a.length;i++){
if(a[i]=t){
loc=i;
break;
}
}
//2,移动元素
if(loc<o){
System.out.println("输入的数在数组中不存在");
}else{
for(int j=loc;j<a.length-1;j++){
a[j]=a[j+1];
}
//最后一个元素置0
a[a.length-1]=0;
}
//验证输出
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
*个人觉得比插入算法简单些。。。
三,冒泡算法
该算法特点:需要将数组内元素两两对比
// 对一个无序的数组进行排序
int[] arr = {10,5,3,4,2,9,7};
int tmp = 0;
for(int i=0;i<arr.length-1;i++){ // 外层控制趟数
for(int j=0;j<arr.length-1-i;j++){ // 两两比较
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
intj = arr.length-1; j > loc; j--