第三次作业

 1.个人学习进度

 

代码行数(新增/累计)

博客字数(新增/累计)

学习时间(新增/累计)

重要成长

目标

1300行

8000字

130小时

了解JAVA程序设计

第十一周

200/200

600/600

10/10

学习标识符以及关键字和运算符,基本数据类型。

第十二周

200/400

800/1400

10/20

面向对象程序设计类,域,方法,实例对象,继承性,多态性

第十三周

100/500

2000/3400

15/35

变量作用域范围以及修饰词。

第十四周

50/550

500/3900

15/50

 

 学会使用了数组和字符串

 

二、解题思路

大致思路是取pivot为标准,比它小的放在左侧,比它大的放在右侧。

三.代码部分

public class kaohesan{
  static void swap(int a[],int i,int j){      定义swap是交换方法
    int temp;
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
  static int kaohesan(int a[],int left,int right){
    int pivot=a[right];               声明分区标准pivot
    int tail=left - 1;
    for (int i=left;i<right;i++){          遍历出pivot外的所有元素
      if (a[i]<=pivot){
      swap(a,++tail,i);              小于其的元素放在前一个字数组末尾
      }
    }
    swap(a,tail+1,right);               把pivot放在所有小于它的元素的右侧
    return tail + 1;                     返回tail值
  }
  static void quickSort(int a[],int left,int right){ 定义一个无返回值的递归方法
    if (left>=right)
      return;
    int pivotIndex=kaohesan(a,left,right);
    quickSort(a,left,pivotIndex - 1);        基准索引值减一,数组是实参
    quickSort(a,pivotIndex+1,right);        基准索引值加一,索引是实参
  }
  public static void main(String args[]){
    int a[]={15,1,2,5,8,15,1,2,5,38};       声明数组
    int length=a.length-1;
    quickSort(a,0,length);
    for (int i=0; i<a.length; i++){        遍历数组
      System.out.print(" " + a[i]);
    }
  }
}
四、截图部分

五、感受
通过这次结对编程合作,两个人把各自对代码的理解和字符串数组的应用结合在一起,
各取所长,用了大概一个小时的时间完成了整个程序,所谓快速排序就是从后往前比较
,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,
直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果
有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个比基准值大的
值才交换。直到从前往后的比较索引>从后往前比较的索引,结束第一次循环,此时,对
于基准值来说,左右两边就是有序的了。
六、对队友的评价
我的队友逻辑能力较清晰,能听进去他人的建议,但是我们两个基础能力很弱,欠缺练
习,所以这次考试很吃力,通过这次考试我知道了平时要多注意练习,按时完成老师留得
课业任务。

 

 

posted on 2017-12-01 21:15  孙晟博  阅读(165)  评论(0编辑  收藏  举报