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


     一,插入算法

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

           //先定义一个数组(如要添加元素,咱们得在元素末尾空出来一个预备位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(
    intj = arr.length-1; j > loc; j--){
                    a[j]=a[j-1];
                }

               //添加插入的值

            a[loc] = t;
            }

                               for(int i = 0;i<arr.length;i++){     //验证

                                   System.out.print(arr[i]+" ");

                           }

    二,删除算法

              一个有序的数组,删除一个元素后依然有序

            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]+" ");
               }

          *个人觉得比插入算法简单些。。。

    三,冒泡算法

         该算法特点:需要将数组内元素两两对比

            

    // 对一个无序的数组进行排序

           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]+" ");

           }

    intj = arr.length-1; j > loc; j--

  • 相关阅读:
    Django实战(4):scaffold生成物分析
    Django实战(3):Django也可以有scaffold
    创建第一个模型类
    1. 实战系列的开发目标
    Django第一步
    URLconf+MTV:Django眼中的MVC
    mp4文件格式解析
    傅里叶分析之掐死教程(完整版)更新于2014.06.06
    关于Spinlock机制的一点思考
    spinlock变量没有初始化
  • 原文地址:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10720942.html
Copyright © 2020-2023  润新知