第三次作业
Posted 轩儿嘛呢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次作业相关的知识,希望对你有一定的参考价值。
1.第三次作业:
学号:1501012006于子轩--1501020514王东旭
GIT地址:https://gitee.com/yzx924/1501020506YuZiXuan1501020514WangDongXuKaoHeSan.git
2.个人学习进度条:
|
代码行数(新增/累积) |
博客字数(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
1500行 |
10000 |
100小时 |
精通java程序设计 |
第十一周 |
100/100 |
500/500 |
10/10 |
对java进行逐步了解 |
第十二周 |
100/200 |
0/500 |
15/20 |
学习了解结构化程序设计 |
第十三周 |
156/300 |
700/1000 |
15/20 |
了解面向对象程序设计 |
第十四周 |
400/500 |
1500/2000 |
35/40 |
学习了数组 |
3.解题思路:
题目要求:
给定一组数列,使用快速排序的方法将数列按照由小到大的顺序对数组进行排序。数列为两名同学的学号相联,两个数为一组,如果遇到以0开头,则省略不写。
如1501020551李四-1501020550张三,则序数列为{15,1,2,5,51,15,1,2,5,50}。
输出格式:
输出排序后的数列,以空格分隔。
输出样例:
1 1 2 2 5 5 15 15 50 51
快速排序思想(在网上查询得到):
快速排序算法介绍 快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更有艺术,取一个基准元素,拆分之后基准元素左边的元素都比基准元素小,右边的元素都不小于基准元素,这样只需要分别对两个子数组排序即可,不再像归并排序一样需要归并操作。基准元素的选取对算法的效率影响很大,最好的情况是两个子数组大小基本相当。为简单起见,我们选择最后一个元素,更高级的做法可以先找一个中位数并把中位数与最后一个元素交换,之后再进行相同的操作步骤。
快速排序实现:
把数组拆分为两个子数组加上一个基准元素: 选取最后一个元素作为基准元素,index变量记录最近一个小于基准元素的元素所在的位置,进入循环体进行循环比较
代码部分:
import java.util.Arrays; public class QuickSort { public static void sort(int a[], int b, int c) {
int i, j, index; if (b > c) { return; } i = b; j = c; index = a[i]; //用子表的第一个记录做基准 while (i < j) //从表的两段交替向中间进行扫描 { while (i < j && a[j] >= index) j--; if (i < j) a[i++] = a[j]; while (i < j && a[i] < index) //用比基数小的记录替换低位上的记录 i++; if (i < j) //用比基数大的记录替换高位上的记录 a[j--] = a[i]; } a[i] = index; //将基数值替换回a[i] sort(a, b, i - 1); //对低的子表进行递归排序 sort(a, i + 1,c); //对高的子表进行递归排序 } public static void quickSort(int a[]) { sort(a, 0, a.length - 1); } public static void main(String[] args) { int a[] = { 15,1,2,5,6,15,1,2,5,14}; quickSort(a); System.out.println(Arrays.toString(a));
} }
运行结果:
5.小结感受:
我个人非常喜欢结对编程的这种模式,这种方法不会让自己觉得是自己一个人,身边有一个人再给你出主意,不会再觉得孤独和恐惧。
由我和王东旭组成的小组中,我们分别充当不同的角色,来完成老师布置的项目任务。他负责给我提供思路,我负责在电脑上进行编写。当然在这之中我们也会出现意见不同的地方,但我们俩不断地进行讨论,相互接受并理解对方的想法,将我们两个人的想法逐渐融合,使项目最终成型。
通过这次的结伴而行,使我少走了很多弯路,少钻了很多牛角尖,很多地方在他的影响下豁然开朗,以后会更多的尝试这种方法!
6.评价伙伴:
借着这次的结对编程,让我第一次这么近距离的接触王东旭,感觉他这个人很稳重,再上传代码的时候,我们出现了问题,但他一点都不慌张,还不断的安慰着我“别着急,没事,来得及,慢慢来,急中出错!”而且觉得他也很有自己的想法,感觉他的基础在很大程度上都是高于我的,很多地方在他的影响下都豁然开朗。关键是脾气好,即便有时候会反驳他的意见,他还是会很耐心的告诉我他为什么会这么想,然人感觉很舒服。
以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章