A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑夜中的沉思者 初级黑马   /  2018-4-3 23:04  /  773 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

短暂JavaEE基础班就要结束了,说实在也没什么技术贴能写,毕竟现在学的还不多。这里我清理了一些知识点:一些基础语句:选择结构,循环结构之类的;面对方法中的封装;数组中的一维数组,二维数组,Arraylist;简单的IO流。差不多这样吧,之前是想写一个for循环流程的知识点,不过看了论坛上的技术贴就觉得有些简单了。不过在写快速排序之前来看看这个题,热一下身倒也可以。
下面先上题:
public class Test_01 {
    public static void main(String[] args) {
        int i = 0;
        for (method('B'); method('C') && i < 2; method('D')) {
            method('A');
            i++;
        }
    }
    public static boolean method(char c) {
        System.out.println(c);
        return true;
    }
}
问输出什么? 这个题目呢,肯定是很基础的,除了咋一看上去有些唬人之外,内容也就是之前我们上课的时候讲过的for循环的流程。不过就是这个题,也是就业时的面试题。当然做这样的基础题只要静下心来,按部就班的走一遍流程就完成了,所以这里写一下答案过程就不提了,不会的话可以看一下for循环的流程。
答案:BCADCADC。

好了现在呢,就讲数组排序的问题了。我们这个JavaEE基础班学到的内容也足够做数组排序的问题了,特别是经典的冒泡排序和选择排序。只要告诉你它的运行方式,你大概就能写出来了。但是这两个排序方式太简单了,而且效率很低。本来我也不清楚这个效率低不低的,然后我学到了获取当前时间的方法,于是测试了三者对数组处理的速度。
我在写完快速排序之后,测试了这三种排序方式:对100000个不重复元素的数组进行排序
冒泡排序用时 15000ms左右
选择排序用时 4400ms左右
快速排序用时 10ms左右
可以看出快速排序比前两种好的太多了,特别是在处理大容量的数组的时候。然后我通过观察这三者的代码,发现冒泡排序和选择排序重复次数很高,大概需要遍历数组n/2次,n是数组长度,因为每遍历一次只能减少下次遍历一个数组元素的运算量。
冒泡排序的循环内容:
for(inti=0;i<arr.length-1;i++){//外层循环控制排序趟数
      for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    }
可以看出遍历全部数组成员很大程度的浪费了计算力,那么就需要减少遍历的次数以及每次遍历的元素个数。嗯,好的,看不懂~这个可以在之后的学习中慢慢的去了解,不过呢可以看出来,好的算法可以让程序变的更加简洁、高效!所以在学习的过程中,我们应该尝试各种方式的去实现目标,不断的优化自己的代码,在学习的过程中养成这样的习惯,然后也需要我们了解更多的知识内容,才能想出更好的方案来。
好了好了,也写不出什么花样来,希望对比较基础的同学有那么一点点启发吧。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马