首页 > 代码库 > java-数组-增删改查

java-数组-增删改查

问题一:找出最大值(最大或最小)

         法一:用一个中间变量(默认是a[0])与数组每一个值比较,大的就赋值给中间变量

         法二:找出最大值的下标,用一个下标变量(默认‘0’)与数组的每个值比较,大的就赋该值的下标给变量

问题二:数组的查找操作。(二分法的应用:对于有序的序列)

        练习:有一个有序的数组,想要将一个元素插入到该数组中,
                还要保证该数组是有序的。如何获取该元素在数组中的位置。
                即在[1,3,6,8,9],插入一个7,而且保持有序

 1 //利用二分法查找 2     //二分法:重点以中间值开始比较,key大的话以中间值后一位为起点开始查找,相反类推 3     //key小的以中间值前一位为起点开始找 4     public static int halfSearch(int[]arr,int key) 5     {   6         //设置要查询范围的首和尾的下标 7         int s=0,e=arr.length-1; 8         //设一个中间值下标,默认-1 9         int h;10         //当首小于尾时才循环,没有循环次数要求。所以用while11          while(s<=e)12        {13             //中间变量下标, 14               h=(s+e)/1;15             if(arr[h]<key)16             {17                 s=h+1;//必须+1,以此为起点18                 //System.out.println(h);19             }20             else if(arr[h]>key)21             {22                 e=h-1;//必须-1,以此为终点23             }24             else if(arr[h]==key)25             {26                 //第三种情况,两者相等,则跳出循环27                 return h;28             }29             //System.out.println("dd");30         }31          //这里必须是s,不是h,因为while循环里一种情况是arr[h]==key,而另一种情况就是下面的32         return s;33      }

 

问题二:排序(从小到大)

        Java排序方法:1.冒泡排序。2.选择排序。3.插入排序。4.快速排序。

      1.冒泡排序法:

 1     //冒泡排序法:从a[0]开始,每个相邻的数比较,较大时,两者交换。 2     //第一次将最大值交换到了最后一位,第二次交换到倒数第二位,以此类推 3     //这里要从小到大排序 4     public static void bubbleSort(int[]arr) 5     { 6         //首先一定是两次for循环 7         for(int i=1;i<arr.length;i++) 8         { 9             for(int k=0;k<arr.length-i;k++)10             {   11                 //交换要用到中间变量12                 int tmp;13                 if(arr[k]>arr[k+1])14                 {15                     tmp=arr[k+1];16                     arr[k+1]=arr[k];17                     arr[k]=tmp;18                 }19              }20           }21   }

     2.选择排序

 1 //选择排序法:找出最大值,放在最后一位,再从剩下的数找最大值,以此类推 2     //第一次循环,从0到n,用下标找出最小值,然后与最后一位(n)交换, 3     //第二次循环,从0到n-1,找出最小值再与(n-1)位交换,以此类推 4     //首先想到两次for循环!!! 5     //这里是从大到小排列, 6     public static void selectSort(int[]arr) 7     { 8          for(int i=1;i<arr.length;i++) 9         {10             //默认下标为0,每一次都从0开始与后面比较11             int min=0;12              13             for(int k=0;k<arr.length-i;k++)14             {15                 //找出最小值16                 if(arr[k+1]<arr[min])17                     min=k+1;18              }19             //循环完后找出了最小值的下标20             //与最后一位交换!!(交换必须想到用中间变量!!)21             //System.out.print(arr[min]+"\t");22             //中间变量用于交换23             int tmp;24             tmp=arr[arr.length-i];25             arr[arr.length-i]=arr[min];26             arr[min]=tmp;27         }28      }

   3.插入排序

 1 //插入排序法:以第一个数为始点,拿后面的第二个数比较,较大插入到它的后面, 2     //否则前面,第三个数开始与前面的第二个比较,直到交换到比前面的数大 3     //这里的插入实际就是交换值(位置) 4     //这里从小到大排序 5     public static void insertSort(int[]arr) 6     { 7         //进行n-1次的交换 8         for(int i=1;i<arr.length;i++) 9         {   10             //从第一个和第二个开始比较插入11             //比较次数依次增加12             int tmp;13             for(int k=i;k>0;k--)14             {   15                 //这里是从最后面的那个元素即i开始与前面比较的16                 if(arr[i]<arr[k-1])17                 {18                     //实现交换19                     tmp=arr[i];20                     arr[i]=arr[k-1];21                     arr[k-1]=tmp;22                 //注意交换后,i即下标要改为交换后的位置的下标即k-123                     i=k-1;24                 }25                 //如果刚好最后一个大于倒数第二个,则不必循环了26                 else break;27              }28          }29    }

   4.快速排序

//快速排序法(挖坑填数+分治法):    public static void quikSort(int []arr)    {             }

 

java-数组-增删改查