第三次作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次作业相关的知识,希望对你有一定的参考价值。
1.学号和GIT地址
本次作业两名同学的学号:1501020532王力销 1501020534乔鑫森
本次作业GIT的提交地址 https://gitee.com/darkknightwlx/32WangLiXiao34-QiaoXinSen-KaoHeSan.git
2.学习进度条
3. 本次作业的解题思路
快速排序概述
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn)次比较。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,并且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。
快速排序,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
步骤
选择一个基准元素,通常选择第一个元素或者最后一个元素
通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的元素值均比基准值大
此时基准元素在其排好序后的正确位置
然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
1 public class a { 2 3 public static void sort(int a[], int x, int y) { //定义一个有两个字符串缓冲区的整形字符串a,低位缓冲区是x,高位缓冲区是y 4 int i, j, z; 5 if (x > y) { 6 return; 7 } 8 i = x; 9 j = y; 10 z = a[i]; // 用子表的第一个记录做基准 11 while (i < j) { //从表的两端交替向中间扫描 12 while (i < j && a[j] >= z) 13 j--; 14 if (i < j) 15 a[i++] = a[j]; //用比基准小的记录替换低位记录 16 while (i < j && a[i] < z) 17 i++; 18 if (i < j) 19 a[j--] = a[i]; // 用比基准大的记录替换高位记录 20 } 21 a[i] = z; // 将基准数值替换回 a[i] 22 sort(a, x, i - 1); // 对高位缓冲区排序 23 sort(a, i + 1, y); // 对低位缓冲区排序 24 25 } 26 27 public static void quicksort(int a[]) { //定义一个方法用来给出字符串a 28 sort(a, 0, a.length - 1); 29 } 30 31 public static void main(String[] args) { 32 33 int a[] = { 15,1,2,5,32,15,1,2,5,34 }; 34 quicksort(a); 35 for(int c=0;c<a.length; c++) //遍历然后按要求输出 36 { 37 System.out.print(a[c] + " "); 38 } 39 } 40 }
4. 截图
5. 感受
这次考核考察的快速排序,和二分法,二选一。这两种方法都不太知道怎么应用,这就体现了团队合作的优点,1+1>2。两个人不同的解题思路与思维方式,优势互补,集思广益,对解决问题有很大帮助。
6. 评价伙伴
我的合作伙伴是王力销。我的动手能力比较弱,代码等等都是他打的,做事细心,注重细节。谨慎,又乐观。这次考核我没起什么作用,全抱大腿了。期待与他的下一次合作。
以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章