第三次作业

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.评价伙伴:

  借着这次的结对编程,让我第一次这么近距离的接触王东旭,感觉他这个人很稳重,再上传代码的时候,我们出现了问题,但他一点都不慌张,还不断的安慰着我“别着急,没事,来得及,慢慢来,急中出错!”而且觉得他也很有自己的想法,感觉他的基础在很大程度上都是高于我的,很多地方在他的影响下都豁然开朗。关键是脾气好,即便有时候会反驳他的意见,他还是会很耐心的告诉我他为什么会这么想,然人感觉很舒服。

以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章

第三次寒假作业

第三次作业

第三次作业

第三次作业

第三次作业

第三次作业