关于数组的逆序:
- 数组逆序思想
- 使用指针从数组的两头开始进行互换操作,当两个指针指向的数组索引值相同时结束。
public static void mian(String[] args){ int[] array={1,2,3,4,5,6,7} for(int i=0,j=array.length-1;i<j;i++,j--){ int temp=array[j]; array[j]=array[i]; array[i]=temp; } }
- 使用指针从数组的两头开始进行互换操作,当两个指针指向的数组索引值相同时结束。
关于数组的选择排序:
- 定义:
- 将数组的首元素与后面的元素一次对比,确定最小元素放在首位,在从第二元素向后依次对比得到最小元素。依次类推循环length-1次即可。第n次循环要对比的次数为length-n
-
public static void main(String[] args){ int[] array={6,2,4,3,8,9,5}; for(int i=0;i<array.length-1;i++){ for(int j=i+1;j<array.length;j++){ if(array[j]<array[i]){ int temp=array[i]; array[i]=array[j]; array[j]=temp; } } } }
关于数组的冒泡排序:
- 思想:从下标为0开始,将数组相邻的两个元素依次对比得到最大值向后放,最终确定数组最大值。
-
public static void main(String[] args){ int[] array={9,3,8,2,6,4,5,1}; for(int i=0;i<array.length;i++){ for(int j=0;j<array.length-1-i;j++){ if(array[j]>array[j+1]){ int temp=array[j+1]; array[j+1]=array[j]; array[j]=temp; } } } }
关于数组的折半查找:
- 方法:使用三个指针 min=0, mid=(min+max)/2,max=array.length-1;使用mid对应的值与数据对比
- 若mid>数据说明mid之后都大于数据:令max=mid-1;反则令min=mid+1;
- 使用条件:数组已按照升序拍好序列
-
public static void main(String[] args){ int[] array={0,1,2,3,4,5,6,7,8,9} int numb=5; //查找数字5 int min=0,max=array.length-1,mid=0; //局部变量 select(5,array); public static int select(int numb,Array[] array){ while(min<=max){ mid=(min+max)/2; if(array[mid]>numb){ max=mid-1; }else if(array[mid]<numb){ min=mid+1; }else{ return array[mid]; } } return -1; //数字不存在 } }