博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20162302 《程序设计与数据结构》第三周学习总结
阅读量:5076 次
发布时间:2019-06-12

本文共 2235 字,大约阅读时间需要 7 分钟。

20162302 2017-2018-1 《程序设计与数据结构》第三周学习总结

教材学习内容总结

选择排序

插入排序
冒泡排序
快速排序
归并排序

教材学习中的问题和解决过程

  • 问题1:和结对伙伴在对于教材上的选择排序的工作原理产生争执,事后发现是在交换数据位置的时间上有分歧。
  • 一种理解是交换位置套在最内层for循环

1062717-20170921211843212-715976317.png

  • 另一种理解是套在外层for循环

1062717-20170921211943321-1939277841.png

  • 问题1解决方法:

    具体的方法就是调用观察运行结果
    1062717-20170921212049650-293402843.png
    第一种方法可以看到出了一个非常明显的错误
    1062717-20170921212125556-1413181413.png
    第二种方法就可以得到正确的结果

    在经过我们两个人的研究之后,发现,如果把交换的过程附在内层for循环,就需要在写一些继续扫描后面内容的代码以保证扫描的完整性

  • 问题2:将选择排序应用到数组里面
  • 问题2解决方案:
    自己写出来的代码和书上的范例差距不大
public void selection(int[] data){        int min;        for(int i = 0; i
  • 问题3:将插入排序法应用到数组
  • 问题2解决方案:
    关于在条件的判断的方面相对于课本上的略显笨拙
public void insertion(int[] data) {        //插入排序        for (int i = 0; i < data.length; i++) {            int a = data[i];            for (int j = i + 1; j < data.length; j++) {                if (data[j] < data[i]) {                    int d = data[j];                    int n = j;                    while (n != i) {                        data[n] = data[n - 1];                        n--;                    }                    data[i] = d;                }            }        }    }

代码调试中的问题和解决过程

  • 问题:在编写算法复杂度-3中的最后一个代码的时候排序工作量太大。
  • 解决方案:优化代码,跳过排序的环节,降低复杂的

  • 这个是排序后在提取第一位和最后一位的思路,排序的代码之前就写好了,所以思路相对简单复杂度为O(n^2)

public void qwer(int[] data){        for (int i = data.length - 1; i >= 0; i--) {            for (int j = 0; j < i; j++) {                if (data[j] > data[j + 1])                    exchange(data, j, j + 1);            }        }        System.out.println("The min:" + data[0]);        System.out.println("The max:" + data[data.length - 1]);    }    public void exchange(int a[], int b, int c) {        int qwe = a[b];        a[b] = a[c];        a[c] = qwe;    }
  • 这个是简化后的代码,复杂度为O(n)
public void asdf(int[] data){        int min = data[0], max = data[0];        for (int i = 0; i
data[i]) max = data[i]; System.out.println("The min:" + data[0]); System.out.println("The max:" + data[data.length - 1]); }

1062717-20170924180651228-1002635826.png

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 叙述的问题很清晰,讲解很仔细
    • 在排版上黑界面中放一张白色为主体的有些突兀
    • 结构清晰

本周结对学习情况

  • 结对学习内容:

    研究选择排序法的代码表现形式

其他(感悟、思考等,可选)

这周是从我开始接触程序设计以来第一次出现了结对学习的落实。由于结对伙伴的缘故,以前大部分时间都是单打独斗和辅导。在辅导对方的时候,自己并未得到发展,只是加强巩固自己之前的基础,相对于结对学习提高要小不少。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 ??/?? 1/2 15/25
第三周 465/465 1/3 15/40

参考资料

转载于:https://www.cnblogs.com/yangjingdian/p/7571273.html

你可能感兴趣的文章
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
实验五 Java网络编程及安全
查看>>
32位与64位 兼容编程
查看>>
iframe父子页面通信
查看>>
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>
从一个标准 url 里取出文件的扩展名
查看>>