zoukankan      html  css  js  c++  java
  • 数组常用算法举例加解释(第一篇)

     一,插入算法

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

           //先定义一个数组(如要添加元素,咱们得在元素末尾空出来一个预备位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--

  • 相关阅读:
    编译安装php
    CentOS yum 安装LAMP PHP5.4版本
    CentOS下php安装mcrypt扩展
    CentOS安装crontab及使用方法(转)
    解决svn "cannot set LC_CTYPE locale"的问题
    CentOS下通过yum安装svn及配置
    linux svn启动和关闭
    vagrant启动报错The following SSH command responded with a no
    并行进程问题
    利用集群因子优化
  • 原文地址:https://www.cnblogs.com/zhangxiong-tianxiadiyi/p/10720942.html
Copyright © 2011-2022 走看看