第二张算法总结

1.分治法体会

分治法简而言之就是分而治之,将一个问题分为若干个子问题,再将子问题一一求解出来之后再合并回原来的问题,从而解决原本的问题。分治法能够将一个原本比较复杂的问题逐渐缩减为很简单解决的小问题,简单到可以直接求解出来,再合并回去就能将一个复杂的问题解决。

分治法适用于该问题可以分解为若干个规模较小的相同问题,并且利用该问题分解出的子问题的解可以合并为该问题的解。

二分查找也是典型的分治法的应用,二分查找有个前提,就是数列是有序的,二分查找的思路就是不断将原问题分为1/2个原问题,判断中间数是否与所查找的数相同则返回,不同就比较大于还是小于,基于结果决定想做查找还是向右查找。

二分查找:

int binarySearch(int a[],int x,int n){

int l=0;int r=n-1;

while(l<=r){

int mid=(l+r)/2;d++;

if(x==a[mid]) {return mid;}

else if(x>a[mid]){l=mid+1;}

else {r=mid-1;}

}

return -1;

}

分治法能够将问题简单化,在解决、处理问题方面更加容易,但如果在考虑时间复杂度的情况下,需要更加思考分治法的结果是否合适。

2.结对编程情况

相比一个人做题,打代码,两个人打代码可以互相讨论商量问题解决的思路,能够扩充思路,在打代码的时候能互相学习对方打代码的习惯,了解与自己有什么不一样的地方,学习不同的思路,而且在做题的过程中能够互相提出问题,看出对方代码的问题所在,指出并提出自己的想法,若有不同想法的时候,可以商量解决,多沟通能学到更多的东西,自己打代码的话,以为自己一次就能答对,结果出现一堆错误,在队友的帮助下改正过来非常轻松,队友的能力也很强,能够互相学习,互相进步,期待下一次合作。

原文地址:https://www.cnblogs.com/ydh52/p/11665819.html

时间: 2024-11-08 15:41:32

第二张算法总结的相关文章

算法导论(Introduction to Algorithms )— 第二章 算法入门 — 2.1 插入排序

一.插入排序:INSERTION-SORT 1.适用范围: which is an efficient algorithm for sorting a small number of elements. 对于少量元素的排序,插入排序是一种高效的算法. 2.原理: Insertion sort works the way many people sort a hand of playing cards. We start with an empty left hand and the cards

第二章 算法入门 合并排序

在第二章中难的算法不多,接下来我会把稍微复杂一点的算法整理一下 #include <iostream> using namespace std; void mergeSort(int *A,int left,int mid,int right) { int *L=new int[mid-left+1]; int *R=new int[right-mid+1]; int i,j; for(i=0;i<mid-left+1;i++) { L[i]=A[left+i]; } for (j=0;

第二章 算法基础 思考题2-1

package chap02; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Random; import org.junit.Test; /*** * 在归并排序中对小数组采用插入排序 * * @author xiaojintao * */ public class ques2_1 { /** * 归并排序算法 * * @param a * @return */ static void m

第二章 算法基础 思考题2-4(逆序对)

1 package chap02; 2 3 import static org.junit.Assert.*; 4 5 import java.util.Arrays; 6 7 import org.junit.Test; 8 9 public class ques2_4 { 10 /** 11 * 逆序对,将一个序列中的所有逆序对打印输出 12 * 13 * @author xiaojintao 14 * 15 */ 16 static void printReverseOrder(int[]

第二篇 算法概述及复杂度

虽然本系列随笔是记录数据结构相关的内容,但是我们都知晓算法和数据结构是密不可分的.我们也可以时常看到一个公式“程序设计=数据结构+算法”.数据结构是研究数据之前的关系,以及数据在计算机中的存储形式,而算法是让数据通过一定的形式得到我们需要的结果.这其中包含各种的逻辑运算等. 提及算法,我们会自然的联想到一个关于数学牛人的故事:“高斯7岁那年开始上学.10岁的时候,一天,老师布置了一道题,1+2+3······这样从1一直加到100等于多少.高斯很快就算出了答案,起初高斯的老师布特纳并不相信高斯算

李航老师的《统计学习方法》第二章算法的matlab程序

参考了http://blog.sina.com.cn/s/blog_bceeae150102v11v.html#post % 感知机学习算法的原始形式,算法2.1参考李航<统计学习方法>书中第二章的算法P29 close allclear allclcX=[3,3;4,3;1,1];Y=[1,1,-1];%训练数据集及标记learnRate=1;%学习率Omega=zeros(1,size(X,2))b=0 %% ω和b的初值 i=1;k=0;while 1 if Y(i)*(sum(Omeg

JUST第二界算法设计大赛题解

1.问题描述: 悠悠假期同叔叔一起去书店,他选中了六本书,每本书的单价(单位:元)分别为:3.1,1.7,2,5.3,0.9 和7.2.不巧的是,叔叔只带了十几块钱,为了让悠悠高兴,叔叔同意买书,但提出了一个要求,要悠悠从六本书中选出若干本,使得单价相加所得的和同10 最接近.请编程帮助悠悠解决这个问题.输出格式:第一行输出1 个整数,表示组合方法数量:第二行开始,一行输出一种价格组合. #include"cstdio" #include"cmath" #inclu

剑指offer—第二章算法之快速排序

算法:排序和查找(二分查找,归并排序,快速排序),位运算等. 查找:顺序查找,哈希查找,二叉排序树查找,哈希表. 二分查找可以解决:"旋转数组中的最小数字","数字在排序数组出现的次数"等问题. 哈希表:优点:O(1)时间内查找一个元素的效率最高. 缺点:需要额外的空间来实现哈希表. 二叉排序树查找:对应二查搜索树查找,可以解决:"二叉收索树的后续遍历","二查搜索树和双向链表" 排序:排序算法要熟练,额外空间消耗,平均时间复

第二章 算法

算法定义 算法是描述解决问题的方法,是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性 输入输出 算法具有零个或多个输入,至少有一个输出 有穷性 算法在执行有限步骤后自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成 确定性 算法的每一步都具有确定的含义,不会出现二义性 可行性 算法的每一步都是可行的,也就是说每一步都能通过执行有限步骤的次数完成 算法设计的要求 正确性 指算法至少应该具有输入输出,能得到问题的正确解 算法正确的