数组常用算法举例加解释(第一篇)

 一,插入算法

        一个数组有序,在添加一个元素后,求数组依然有序

       //先定义一个数组(如要添加元素,咱们得在元素末尾空出来一个预备位0),顺便定义要加入的元素t
        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(int j=0; j<a.length-1;j--){
                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");

       }

猜你喜欢

转载自www.cnblogs.com/zhangxiong-tianxiadiyi/p/10720942.html