标签:代码行数 怎么 实例 art 快速排序法 第一周 程序设计 book 分区
public static <T, S> int func(List list, Map<Integer, S> map) { ... }
问题1解决方案:
1.线性查找可以针对任何数组,将数组中的每项依次遍历出来之后,与所要查找项对比。消耗时间也是不规律的,可能查找项处于数组的第一位,也可能处于数组的最后一位。还有可能数组中完全不存在需要查找的项目。
2.二分查找法,针对有序数组使用。因为数组已经有序排列,可以通过将数组从中间分割,将中间项与所需查找项对比;然后再根据对比结果,再次向上或者向下,寻找中间项对比,直至完成查找。
而且,对于查找最开始,可以通过与第一项和最末项的对比,确定查找项是否处于此数组中。问题3解决方案:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
问题4解决方案:
稳定性的定义:
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
常见算法的稳定性(要记住)
堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
稳定性的意义
1、如果只是简单的进行数字的排序,那么稳定性将毫无意义。
2、如果排序的内容仅仅是一个复杂对象的某一个数字属性,那么稳定性依旧将毫无意义(所谓的交换操作的开销已经算在算法的开销内了,如果嫌弃这种开销,不如换算法好了?)
3、如果要排序的内容是一个复杂对象的多个数字属性,但是其原本的初始顺序毫无意义,那么稳定性依旧将毫无意义。
4、除非要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义,那么我们需要在二次排序的基础上保持原有排序的意义,才需要使用到稳定性的算法,例如要排序的内容是一组原本按照价格高低排序的对象,如今需要按照销量高低排序,使用稳定性算法,可以使得想同销量的对象依旧保持着价格高低的排序展现,只有销量不同的才会重新排序。(当然,如果需求不需要保持初始的排序意义,那么使用稳定性算法依旧将毫无意义)。
问题1解决方案:
"equals": 比较的是两个字符串中的每个字符是否相同,例如:a="1243", b="1243",那么a.equals(b)就会返回TRUE,因为a和b两个字符串中的每一个字 符都相同,如果对a或者b中的任何一个做任何修改,equals()就会返回false。
”==":比较的是两个字符串是否同时引用的一个地址,如果 a=new String("abc");b=a;b引用的a, 所以a == b的比较就会返回TRUE。
compareTo(): 这个函数的作用就是对两个字符串按字典排序的方式进行比较,返回两个字符串中第一个不同的字符的ascII码差值。
int
和integer
并不一样问题2解决方案:
Integer 是 int 包装类,int 是八大基本数据类型之一
Integer 是类,默认值为null,int是基本数据类型,默认值为0;
Integer 表示的是对象,用一个引用指向这个对象,而int是基本数据类型,直接存储数值。
上周没有考试,所以没有错题。
本周主要学习了查找和排序。虽然这么说感觉很少,但是学的东西却一点都不少,查找和排序每个都有五六种反法要去学习,而且还要去理解每一种反法的思维模式。反正这一周很难!
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 56/56 | 2/2 | 20/20 | 主要学会了简单的操作Linux以及如何编写简单的java程序并将它上传到码云 |
第二、三周 | 331/407 | 3/5 | 23/43 | 学会了一些类和程序包的使用,也明白了C语言和Java在有些地方的区别 |
第四周 | 595/1002 | 2/7 | 20/60 | 学会了IDEA以及用IDEAgit码云,也学会了TDD测试 |
第五周 | 1621/2623 | 2/9 | 17/77 | 见识了服务器与用户链接的代码,也学习了继承的一些知识。 |
第六周 | 1770/4393 | 1/10 | 22/99 | 学习了多态以及与接口和继承的关系,还有就是对异常的学习和处理异常的方法以及自定义一个异常 |
第七周 | 1747/6140 | 3/13 | 23/122 | 学习了渐进复杂度的计算,栈和队列的学习,分别用数组和链表实现队列 |
第八周 | 384/6524 | 1/14 | 20/142 | 学习了一些查找和排序的算法,也学会了计算ASL |
计划学习时间:20小时
实际学习时间:20小时
改进情况:无
20182333 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结
标签:代码行数 怎么 实例 art 快速排序法 第一周 程序设计 book 分区
原文地址:https://www.cnblogs.com/qianjiayu/p/11792861.html