第三次作业

1.第三次作业:

学号:1501020514王东旭-1501012006于子轩-

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

学习了解结构化程序设计

第十三周

20/100

200/1000

10/20

了解面向对象程序设计

第十四周

40/100

500/2000

20/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.小结感受:

  我个人非常喜欢编程。编程中,在一次次错误和修正后得出正确的结果时,是我最高兴的时刻。通过这段时间的学习,让我对java有了更深入的了解,

在以后的学习过程中,我会更加努力,认真。

6.评价伙伴:

 我的小伙伴是于子轩,通过这次和她共同学习,让我了解到于子轩是一个对学习非常认真的人,很高

兴和她一组。在写代码的过程中,她的思路非常开阔,对代码的格式严格要求。希望以后能和她配合的

更默契。

 

 

 

   

  

  



转载于:https://www.cnblogs.com/xiaochourou/p/7955126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值