精华内容
下载资源
问答
  • 论文参考文献的出处怎么找

    万次阅读 2018-04-09 21:14:15
    论文文献出处的找:1.找到论文名,去百度学术中百度,会显示出处,特别是期刊文献。2.知网中查找,知网中也会显示出处,特别是期刊文献。3.找到文献,下载打开,中文文献:第一页就显示了出处。 英文文献:有的第...

    论文文献出处的找法:

    1.找到论文名,去百度学术中百度,会显示出处,特别是期刊文献。

    2.知网中查找,知网中也会显示出处,特别是期刊文献。

    3.找到文献,下载打开,中文文献:第一页就显示了出处。

                                        英文文献:有的第一页就显示出处,但有的不显示,那就去百度学术找。

    示例1:

    文章名为:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    出处:2015年的IEEE会议,第9期,37卷,1904为开始页码,最后一页就是终止页码。

    示例2:



    展开全文
  • 大学文献检索资料 DOC

    2009-11-28 10:35:24
    选择检索方法:常用法(顺查、倒查、抽查)追溯 综合(或循环) 5.查找文献线索:6.索取原始文献。 第三章 专利文献及其检索 第一节 专利的基本知识  什么是专利? 所谓专利是指一项技术性的创造...
  • UML参考手册

    2012-05-19 13:15:31
    本书分为三部分:对UML历史和有关建模知识的概述;UML基本概念的综述;...参考文献中所列的许多文献都提及了一些优秀的书籍和杂志文章,有兴趣的读者可据此进一步研究这些方法和概念的形成和发展。
  • 参考文献 1. 题目 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。 2. 解题思路 2. 1暴力 直接遍历,记录该数字的出现...

    1. 题目

    统计一个数字在排序数组中出现的次数。例如,输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。

    2. 解题思路

    2. 1暴力法

    直接遍历,记录该数字的出现次数。

    2. 2 二分法

    遇到排序数组中的搜索问题,应当第一时间想到二分法。

    要得到该数字出现的次数,只需要确定该数字出现的左边界和和右边界。
    详情请看 leetcode 面试题53 - I. 在排序数组中查找数字 I(二分法,清晰图解)

    3. 代码实现

    3.1 暴力法

    时间复杂度O(n),空间复杂度S(1)。

    class Solution:
    	def search(nums, target):
    		count = 0
    		for i in nums:
    			if i == target:
    				count += 1
    		return count
    

    3.2

    时间复杂度O(log2 n),空间复杂度S(1)。

    class Solution:
    	def search(nums, target):
    		"""
    		"""
    		i, j = 0, len(nums)-1
    		# 获取右边界
    		while i <= j:
    			mid = (i+j)//2
    			if nums[mid] <= target: # 则右边界在mid的右边
    				i = mid + 1
    			else: # 则右边界在mid的左边
    				j = mid - 1
    		right = i
    		# 若数组中无 target ,则提前返回
            if j >= 0 and nums[j] != target: return 0
    		# 获取左边界
    		while i <= j:
    			mid = (i+j)//2
    			if nums[mid] < target: # 则左边界在mid的右边
    				i = mid + 1
    			else: # 则左边界在mid的左边
    				j = mid - 1
    		left = j
    
    		return right - left - 1
    

    4. 总结

    遇到排序数组中的搜索问题,应当第一时间想到二分法。

    5. 参考文献

    [1] 剑指offer丛书
    [2] 剑指Offer——名企面试官精讲典型编程题

    展开全文
  • 划分数组法参考文献 1. 题目简介 LeetCode 4. 寻找两个正序数组的中位数 这道题还是有一定难度的,但是也非常的经典,从LeetCode排名第4就能看出来。题目要求算法的时间复杂度为 O(log(m + n)),这里介绍两种方法...

    2020年8月6日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】



    1. 题目简介

    LeetCode 4. 寻找两个正序数组的中位数
    在这里插入图片描述

    这道题还是有一定难度的,但是也非常的经典,从LeetCode排名第4就能看出来。题目要求算法的时间复杂度为 O(log(m + n)),这里介绍两种方法,都是基于二分法,一种复杂度是 O(log(m + n)),另外一种复杂度仅为 O(log(min(m, n))。

    2. 第k小数法

    这道题求中位数,可以看作是求第k小数的特例,因为数组的中位数就等于第(m + n + 1)/ 2 小的数和第(m + n + 2)/ 2 小的数之和的平均值(如果是奇数,这两个数就是同一个数)。那么如何求两个数组的第k小数呢?就是利用分治的思想,借助二分法来实现。具体可以看这里的解法三,我觉得大佬讲的很清晰,自己就不去赘述了。

    时间复杂度 O(log(m + n))

    2.1 递归法

    递归法相对好理解一点,并且由于这个递归属于尾递归,所以编译器不需要不停地堆栈,因此空间复杂度为 O(1)。

    class Solution {
    public:
        double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
            int m = nums1.size(), n = nums2.size();
            int left = (m + n + 1) / 2; 
            int right = (m + n + 2) / 2;
            // 将偶数和奇数的情况合并,如果是奇数,会求两次同样的 k
            return ((double)findK(nums1, 0, m - 1, nums2, 0, n - 1, left) + findK(nums1, 0, m - 1, nums2, 0, n - 1, right)) / 2.0;
        }
    
        int findK(vector<int>& nums1, int start1, int end1, vector<int>& nums2, int start2, int end2, int k) {
            int len1 = end1 - start1 + 1, len2 = end2 - start2 + 1;
    		
    		// 始终让nums1作为长度最小的那个数组,保证如果有数组空了,一定是nums1
            if (len1 > len2) return findK(nums2, start2, end2, nums1, start1, end1, k);
            if (len1 == 0) return nums2[start2 + k - 1];
    
            if (k == 1) return min(nums1[start1], nums2[start2]);
    		
    		// 加min是因为防止一个数组的长度小于 k/2 造成的数组越界
            int i = start1 + min(len1, k / 2) - 1;
            int j = start2 + min(len2, k / 2) - 1;
    
            if (nums1[i] > nums2[j]) {
                return findK(nums1, start1, end1, nums2, j + 1, end2, k - min(len2, k / 2));
            }
            else {
                return findK(nums1, i + 1, end1, nums2, start2, end2, k - min(len1, k / 2));
            }
        }
    };
    

    2.2 迭代法

    把递归法用迭代法重写了一遍,加深印象:

    class Solution {
    public:
    	double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
    		int m = nums1.size(), n = nums2.size();
    		int left = (m + n + 1) / 2;
    		int right = (m + n + 2) / 2;
    		// 将偶数和奇数的情况合并,如果是奇数,会求两次同样的 k
    		return ((double)findK(nums1, 0, m - 1, nums2, 0, n - 1, left) + findK(nums1, 0, m - 1, nums2, 0, n - 1, right)) / 2.0;
    	}
    
    	int findK(vector<int>& nums1, int start1, int end1, vector<int>& nums2, int start2, int end2, int k) {
    		int len1 = end1 - start1 + 1, len2 = end2 - start2 + 1;
            
            while(len1>0){
           	    // 始终让nums1作为长度最小的那个数组,保证如果有数组空了,一定是nums1
                if (len1 > len2) return findK(nums2, start2, end2, nums1, start1, end1, k);
                if (k == 1) return min(nums1[start1], nums2[start2]);
                // 加min是因为防止一个数组的长度小于 k/2 造成的数组越界
                int i = start1 + min(len1, k / 2) - 1;
    		    int j = start2 + min(len2, k / 2) - 1;
                if (nums1[i] > nums2[j]){
                    start2 = j + 1;
                    k = k - min(len2, k / 2);
                }
                else{
                    start1 = i + 1;
                    k = k - min(len1, k / 2);
                }
                len1 = end1 - start1 + 1; 
                len2 = end2 - start2 + 1;
            }
            return nums2[start2 + k - 1];
    	}
    };
    

    3. 划分数组法

    这种方法理解起来更有难度,我看了LeetCode的很多题解,可能是自己有些浮躁,都没看下去。后来我看了LeetCode官方在B站上发的一个讲解视频,大概20分钟,就静下心来仔细听了下,有种豁然开朗的感觉。后来又参考了这位大佬题解的解法四,终于弄明白了,有不懂的童鞋可以去看下视频和讲解,肯定有所帮助。

    本解法的核心:
    在这里插入图片描述
    在这里插入图片描述

    class Solution {
    public:
        double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
            const int len1 = nums1.size(), len2 = nums2.size();
            // 始终让 nums1 作为长度最小的那个数组,防止 nums2 访问越界
            if(len1>len2) return findMedianSortedArrays(nums2,nums1);
            // 分割线左边的所有元素需要满足的个数 (len1+len2+1)/2;
            int totalLeft = (len1+len2+1)/2;
            // 在 nums1 的区间 [0,len1] 里查找恰当的分割线,使得nums1[m-1]<=nums2[n] && nums2[n-1]<=nums1[m]
            // 由推理可知:只需要找到最大的 m ,使得 nums1[m-1]<=nums2[n] 或 nums2[n-1]<=nums1[m] 即可。
            // 为什么是 r = len1 而不是 len1-1 ?原因是比较元素时使用的是 m-1 位置,
            // 令 r = len1,可以比较到 nums1 中的每个元素,不会遗漏
            int l = 0, r = len1;
            while(l<r){
                int m = l+(r-l+1)/2;
                int n = totalLeft - m;
                // 每次比较 nums1 的 m-1 位置和 nums2 的 n 位置
                if(nums1[m-1]>nums2[n]) r = m-1;
                else l = m;
            }
            // 计算两个数组各自左右边界的值
            int m = l, n = totalLeft - l;
            int nums1LeftMax = m==0?INT_MIN:nums1[m-1];
            int nums1RightMin = m==len1?INT_MAX:nums1[m];
            int nums2LeftMax = n==0?INT_MIN:nums2[n-1];
            int nums2RightMin = n==len2?INT_MAX:nums2[n];
    
            if((len1+len2) & 1) return max(nums1LeftMax,nums2LeftMax);
            else return (max(nums1LeftMax,nums2LeftMax) + min(nums1RightMin,nums2RightMin)) / 2.0;
        }
    };
    

    时间复杂度 O(log(min(m, n))


    参考文献

    https://www.bilibili.com/video/BV1Xv411z76J?from=search&seid=2056381085028535468
    https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-w-2/

    展开全文
  • 1.7 参考文献和选读材料 第2章 数组和结构 2.1 数组 2.2 数组的动态存储分配 2.3 结构体和联合体 2.4 多项式 2.5 稀松矩阵 2.6 多维数组的表示 2.7 字符串 2.8 参考文献和选读材料 2.9 补充习题 第3章 栈...
  • 2019第四周作业

    2019-03-22 21:26:00
    了解选择排序法和冒泡排序法的区别,熟练运用二分法查找法 这个作业在哪个具体方面帮助我实现目标 这个作业让我明白选择排序法和冒泡排序法的区别,让我对二维数组的定义和应用有了更深入的了解 参考文献 选择...

    这个作业属于哪个课程 C语言程序设计
    这个作业的要求在哪里 2019年春季学期第四周作业
    我在这个课程的目标是 了解选择排序法和冒泡排序法的区别,熟练运用二分法查找法
    这个作业在哪个具体方面帮助我实现目标 这个作业让我明白选择排序法和冒泡排序法的区别,让我对二维数组的定义和应用有了更深入的了解
    参考文献 选择排序法和冒泡排序法的区别

    一、基础作业

    7-2 选择法排序 (20 分)
    本题要求将给定的n个整数从大到小排序后输出。

    输入格式:

    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

    输出格式:

    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

    输入样例:

    4
    5 1 7 6

    输出样例:

    7 6 5

    1)运行代码

    #include<stdio.h>
    int main()
    {
        int n,l,j,temp,s,i;
        int a[10];
        scanf("%d",&n);
        for(s=0;s<n;s++)
        scanf("%d",&a[s]);
        for(i=0;i<n-1;++i)
        {
            for(j=0;j<n-1-i;++j)
            {
                if(a[j]>a[j+1])
                {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        for(i=0;i<n-1;++i)
        {
            printf("%d ",a[i]);
            printf("%d",a[n-1]);
        }
        return 0;
    }

    2)设计思路
    1582339-20190322194442499-641340840.jpg
    3)编程过程中遇到的问题及解决办法
    1582339-20190322183454702-1732961458.png
    1582339-20190322183501049-1809526385.png
    问题:19行代码后面忘记分号了;没有注意到行末不得有多余得空格。
    解决办法:当输出最后一个数得时候单独输出就解决了行末多余空格得问题。
    4)运行截图
    1582339-20190322184921326-1381130299.png

    7-1 找鞍点 (20 分)
    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
    本题要求编写程序,求一个给定的n阶方阵的鞍点。

    输入格式:

    输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

    输出格式:

    输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

    输入样例1:

    4
    1 7 4 1
    4 8 3 6
    1 6 1 2
    0 7 8 9

    输出样例1:

    2 1

    输入样例2:

    2
    1 7
    4 1

    输出样例2:

    NONE

    1)运行代码

    #include<stdio.h>
    int main()
    {
        int n,a[6][6],s=1;
        
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                scanf("%d",&a[i][j]);
            }
        }
        
        for(int i=0;i<n;i++){
            int q=0,p=0;
            
            for(int j=1;j<n;j++){
                if(a[i][j]>=a[i][q]){
                    q=j;
                }
            }
            
            for(int k=0;k<n;k++){
                if(a[k][q]<=a[p][q]){
                    p=k; 
                }
            }
            
            if(p==i){
                s=0;
                printf("%d %d",p,q);
                break;
            }
        }
        if(s){
            printf("NONE");
        }
    }

    2)设计思路
    1582339-20190322194903760-1502544445.jpg
    3)编程过程中遇到的问题及解决办法
    1582339-20190322185022936-724826468.png
    问题:除了代码上的问题,对嵌套循环用错。
    解决办法:认真对比大括号的位置。
    4)运行结果
    1582339-20190322185537081-1090403892.png
    挑战作业
    7-1 冒泡法排序 (10 分)
    输入1个正整数n(1<=n<=10),然后输入n个整数并存放在数组中,将这n个整数从大到小排序后输出,相邻数字间有一个空格,行末不得有多余空格。

    输入格式:

    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

    输出格式:

    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

    输入样例:

    4 
    75 71 77 76

    输出样例:

    77 76 75 71

    1)运行代码

    #include<stdio.h>
    void bubble (int a[],int n);
    int main()
    {
        int n,a[10];
        
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        bubble (a,n);
        
        for(int i=0;i<n;i++){
            printf("%d",a[i]);
            if(i==n-1){
                return 0;
            }
            printf(" ");
        }
        return 0;
    }
        
    void bubble (int a[],int n)
    {
        for(int i=1;i<n;i++){
            for(int j=0;j<n-i;j++){
                if(a[j]<a[j+1]){
                    int t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }   
    }

    2)设计思路
    1582339-20190322195020442-1454282319.jpg
    3)编程过程中遇到的问题及解决办法
    上一题我就是用的冒泡排序法,所以这题我没有遇到什么问题,基本一次性通过,只是题目没看清楚,将从大到小打成了从小到大。
    4)运行结果
    1582339-20190322190255461-722571930.png

    二、学习进度条

    1582339-20190322195252902-1806478300.png

    三、感悟

    1.这次作业写了好久,确实动了脑筋,通过这次作业,我发现我对以前的知识掌握的很差,并不能熟练运用,过后得要好好看课本了。
    2.通过这次作业,发现自己并不能独立得完成作业,必须借助课本上得例题,或者借助别人帮忙,我会努力让自己有独立完成作业得能力。

    转载于:https://www.cnblogs.com/dzspve/p/10581075.html

    展开全文
  • 了解选择排序法和冒泡排序法的区别,熟练运用二分法查找法 这个作业在哪个具体方面帮助我实现目标 这个作业让我明白选择排序法和冒泡排序法的区别,让我对二维数组的定义和应用有了更深入的了解 参考文献 选择...
  • 数组

    2019-03-22 11:37:00
    1.一维数组:选择排序法、二分查找法 2.二维数据:定义、引用、初始化,二维数组矩阵 课程目标 灵活的使用数组解决问题 课程内容如何帮助我完成目标 对于不同的数据的处理,二维数组使数据平面化 参考文献 ...
  • 信息检索常用方法 常用法 顺查:以检索课题的起始年代为起点,按时间顺序由远及近查找。 优点:系统、全面、可靠。 ...倒查:由近及远,一般用于新开课题,比较关注...利用已有的文献后面参考文献进行追溯查...
  • 本书旨在探讨如何优化算法效率,详细阐述了经典算法和特殊算法的实现、应用技巧和复杂度验证过程,内容由浅入深,能帮助读者快速掌握复杂度适当、正确率高的高效编程方法以及自检、自测技巧,是参加ACM ...参考文献 192
  • word::替换::突出显示

    2014-04-23 11:53:00
    word中【ctrl+H】查找内容:[*]或者[**]或者[*-*][**-**][*-**] 根据参考文献的数量设定* ...此解决的问题:找到丢失endnote文献库后正文中的参考文献标识 转载于:https://www.cnblogs.com/tmmuyb/p/3682571.html...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的解 .2.4.4 运行时间中的对数 2.4.5 ...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的解 2.4.4 运行时间中的对数 2.4.5 检验...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 2.4.6 分析...
  • 作业——5

    2019-03-22 00:13:00
    这个作业属于哪个课程 C语言程序设计Ⅱ 这个作业的要求在哪里 2019年春季学期第四周作业 我在这个课程的目标是 通过C语言完成一些几年后...参考文献 排序算法:冒泡排序 第四周作业 一、程序填空题 输入一个...
  •  参考文献 第2章 算法分析  2.1 数学基础  2.2 模型  2.3 要分析的问题  2.4 运行时间计算  2.4.1 一个简单的例子  2.4.2 一般法则  2.4.3 最大子序列和问题的求解  2.4.4 运行时间中的对数  ...
  •  参考文献 第2章 算法分析  2.1 数学基础  2.2 模型  2.3 要分析的问题  2.4 运行时间计算  2.4.1 一个简单的例子  2.4.2 一般法则  2.4.3 最大子序列和问题的求解  2.4.4 运行时间中的对数  ...
  • 参考文献 第5章 散列 5.1 一般想法 5.2 散列函数 5.3 分离链接 5.4 开放定址 5.4.1 线性探测 5.4.2 平方探测 5.4.3 双散列 5.5 再散列 5.6 可扩散列 总结 练习 参考文献 第6章 优先队列(堆)...
  • 数据结构与算法分析

    2014-01-15 02:05:59
    参考文献  第2章 算法分析  2.1 数学基础  2.2 模型  2.3 要分析的问题  2.4 运行时间计算  2.4.1 一个简单的例子  2.4.2 一般法则  2.4.3 最大子序列和问题的解  2.4.4 运行时间中的对数  2.4.5...
  • 第五周作业

    2019-03-29 12:15:00
    这个作业属于哪个课程 c语言程序设计 II 这个作业要求在哪里 ... 我在这个课程的目标是 学会冒泡以及选择排序 这个作业在那个具体方面帮助我实现目标 新查找的string表头语句 ...参考文献 教材 ...
  • 数据结构与算法分析—C语言描述 高清版

    千次下载 热门讨论 2008-04-05 21:01:56
    参考文献 第5章 散列 5.1 一般想法 5.2 散列函数 5.3 分离链接 5.4 开放定址 5.4.1 线性探测 5.4.2 平方探测 5.4.3 双散列 5.5 再散列 5.6 可扩散列 总结 练习 参考文献 第6章 优先队列(堆) 6.1 模型 ...
  • 数据结构与算法分析 Java语言描述第2版

    千次下载 热门讨论 2013-04-11 17:38:12
    参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 ...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 ...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 ...
  • 计算机科学丛书·数据结构与算法分析:Java语言描述(原书第3版) [美]马克·艾伦·维斯 (Mark Allen Weiss) (作者), 冯舜玺 (译者), 陈越 (译者) 目录 出版者的话 前言 第1章引论1 ...参考文献396
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 2.4.6 分析...
  • 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 ...
  • 4.8.4 使用几个map的例子 小结 练习 参考文献 第5章 散列 5.1 基本思想 5.2 散列函数 5.3 分离链接 5.4 不使用链表的散列表 5.4.1 线性探测 5.4.2 平方探测 5.4.3 双散列 5.5 再散列 5.6 标准库中的散...

空空如也

空空如也

1 2 3 4 5 6
收藏数 116
精华内容 46
关键字:

参考文献查找法