Data Structures and Algorithm Analysis in Java_IntroductionTest


数据结构与算法分析 第一章



工作一段时间了,准备写点博客,一点点积累知识.最近打算学学数据结构,第一个博客,用简单的练练手.


引论 
递归的四条基本法则 
1. 基准情况。必须总要有某些基准情况,它无需递归就能解出。 
2. 不断推进。对于那些需要递归求解的情况,每一次递归调用都必需要使状况朝向一种基准情况推进。 
3. 设计法则。假设所有的递归调用都能运行。 
4. 合成效益法则。在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。 


Java泛型 
class MyClass<AnyType extends Comparable<? super AnyType>> 

1.5 编写一种递归方法,它返回数N的二进制表示中1的个数.利用这样的事实:如果N是奇数,那么其1的个数等于N/2的二进制表示中1的个数加1


    
    /**
     * for test 1.5 求出数n在二进制表示中j出现的个数
     * @param n
     */
    private static void five(int n){
        int i,j,k;
//         i = forfive(n);
//         System.out.println("数"+ n + "的二进制表示中1的个数是" + i);
        
        j = 10;
        k=3;
        i = forfive2(n,j,k);
        System.out.println("十进制数" +n + "用"+ j + "进制表示时" + k + "的个数是" + i );
    }
    
    private static int forfive(int n){
      //递归 利用这样的事实:如果n是奇数,则其1的个数是n/2的个数加1
//        if(n<2)return n;
//        return forfive(n/2) + n%2; 
        
        //循环
            int i = 0;
            while(n>0){
                if(n%2==1) i++;
                n = n/2;
            }
            return i; 
    }
    //拓展 n用i进制表示时数字j出现的次数j
    private static int forfive2(int n,int i,int j){
//        //递归 
//        if(n<i) return n==j ? 1:0;
//        return forfive2(n/i,i,j) + (n%i==j ? 1:0);
        // 循环 
        int k = 0;
        while(n>0){
            if(n%i==j) k++;
            n = n/i;
        }
        return k;
    }


1.6  字符串全排列

里面用到递归和for循环,for循环是横向展,递归是纵向深入.


    /**
     * for 1.6  字符串全排列
     * @param str
     */
    private static void six(String str){
       // 使用字符数组
        char[] st = str.toCharArray();
        int low = 0;
        int hight = st.length;
        forsix(st,low,hight);
//        ArrayList li = new ArrayList();
//        ArrayList li2 = new ArrayList();
//        for(int i=0;i<str.length();i++){
//            li.add(str.charAt(i));
//        }
//        forsix2(li,li2);
    }
    //递归 使用list
    private static void forsix2(ArrayList list,ArrayList list2){

        for(int i = 0;i<list.size();i++){
            ArrayList li = (ArrayList) list.clone();
            ArrayList li2 = (ArrayList) list2.clone();
            li2.add(li.get(i));
            li.remove(i);
            if(li2.size()==3){
                System.out.println(li2);
                return;
            }
            forsix2(li,li2);
        }
    }
    
    //递归 使用字符数组先确定第low位,后面的全排列 类推
    private static void forsix(char[] str,int low,int hight){
        
        if(low==hight){
            System.out.println(str);
            return;
        }
        
        char temp;
        for(int i= low;i<str.length;i++){
            char[] str2 = str.clone();//每次使用替身去处理,省去频繁的交换,但是效率应该会差一些
            temp = str2[low];
            str2[low] = str[i];
            str2[i] = temp;
            
            forsix(str2,low+1,hight);
            
//            temp = str[low];
//            str[low] = str[i];
//            str[i] = temp;
        }
    }



### 回答1: 《数据结构与算法分析Java语言描述(第三版)》是一本介绍数据结构和算法分析Java编程书籍。该书全面讲解了数据结构以及如何分析不同算法的性能,为读者提供了深入理解和实践的机会。 这本书首先介绍了Java语言的基本概念和编程技巧,以便读者能够在后续章节中更好地理解和实现数据结构和算法。接下来,书中详细讲解了各种常见的数据结构,如数组、链表、栈、队列、树和图等。每种数据结构都提供了相应的Java实现代码,并包含了对应的算法分析和性能评估。 此外,书中还介绍了常用的算法设计技巧,如递归、分治法、贪心算法和动态规划等。这些技巧都通过具体的示例和实践案例讲解,帮助读者理解和掌握不同算法的思想和实现方式。 《数据结构与算法分析Java语言描述(第三版)》还包含了大量的习题和实践项目,供读者巩固知识和提高编程能力。习题涵盖了各个章节的内容,并提供了答案和解析,方便读者自我学习和检验。 总的来说,这本书适合那些希望深入了解数据结构和算法,并通过Java语言来实现和分析的读者。无论是学生、程序员还是科研人员,都可以通过阅读和实践这本书来提升自己的编程能力和算法思维。 ### 回答2: 《Java数据结构与算法分析(第3版)》是一本介绍Java语言中数据结构和算法分析的书籍。该书的作者是Mark Allen Weiss。 该书的主要内容包括数据结构的基本概念和Java中的实现,以及算法分析和设计的相关内容。读者可以学习到不同的数据结构如链表、栈、队列、树、图等的概念和使用方法,以及它们在Java中的实现。 此外,该书还介绍了算法分析的基本概念和技巧,如时间复杂度和空间复杂度的分析方法,适用于不同场景下的算法选择等。读者可以学习到如何评估一个算法的效率并进行优化。 《Java数据结构与算法分析(第3版)》的优点在于结合了Java语言的特点,给出了具体的代码实现,并配有详细的注释和解析。这样的设计使得读者可以更好地理解和运用所学的知识。 此外,该书还提供了大量的习题和编程实践,使得读者能够通过实践巩固所学的知识,并且进一步提高编程能力和解决问题的能力。 总而言之,《Java数据结构与算法分析(第3版)》是一本适合Java程序员学习和深入理解数据结构和算法的优秀教材。无论是刚入门的初学者还是有一定编程经验的开发者,都可以从中获得很大的收益。 ### 回答3: 《Data Structures and Algorithm Analysis in Java》第3版是一本介绍Java数据结构和算法分析的经典教材。该教材由Mark Allen Weiss撰写,旨在教授学生如何设计和分析有效的数据结构和算法。 该教材涵盖了广泛的主题,包括基本数据结构(如栈、队列和链表)、树和二叉树、图和图算法、排序和搜索算法等。它提供了大量的示例代码和练习问题,以帮助学生加深对Java编程的理解,并提供了解决问题的思路和方法。 与第2版相比,第3版在内容和例子方面进行了更新和增加。它介绍了新的数据结构和算法,并使用了更现代的Java语言特性。此外,该版教材还强调了面向对象的设计思想和分析方法,提供了更深入的代码示例和分析。 这本教材对初学者和有一定编程经验的读者都非常适用。它可以作为大学本科课程的教材,也可以作为自学的参考书。读者通过学习该教材,可以提高自己的编程技能,提升对数据结构和算法的理解和应用能力。 综上所述,《Data Structures and Algorithm Analysis in Java》第3版是一本涵盖了Java数据结构和算法的经典教材。它不仅帮助读者学习和理解数据结构和算法的基本概念,还提供了丰富的示例和练习问题,帮助读者加深对Java编程的理解和实践能力。无论是在学校课堂还是自学过程中,该教材都是一本非常有价值的参考书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值