算法
文章平均质量分 66
莱安纳德
这个作者很懒,什么都没留下…
展开
-
二分查找定边界(详细解析)
二分查找定边界 学习二分查找的过程中发现经常因为边界定的不正确导致最终结果出错,写篇博客整理一下。以下所有数组都默认是按升序排列的。 1、查找数组中特定值出现的位置 查找数组中值为target的元素,返回其下标。 public static int binarySearch(int[] nums,int target){ //寻找数组中target的元素下标,数组升序排列 int l=0,r=nums.length-1; while(l<r){//当l=原创 2021-06-09 15:48:36 · 2916 阅读 · 4 评论 -
快速排序个人小结(交换法与挖坑法)
快速排序是一种效率很高的排序方法,在做题的过程中经常用到,面试的时候也是一个高频考点,决定对快速排序做个小结。本文参考了文章白话经典算法系列之六 快速排序 快速搞定以及我见过最通俗易懂的快速排序过程讲解,转自《坐在马桶上看算法:快速排序》。这两篇文章对快速排序做了通俗易懂的讲解,看完之后收获很大。 快速排序的思想: 先选取数组中的一个数,使这个数左边的数都比它小,右边的数都比它大(假设按升序排列),那么这个数就到了最终的正确位置上了。再分别对左边和右边的子序列进行排列,利用递归,直到子序列只有一个数,把这个原创 2020-08-11 20:28:06 · 1428 阅读 · 0 评论 -
排序算法小结(插入排序、选择排序、交换排序与快速排序)
学习了插入排序、选择排序、交换排序与快速排序后,对这几种排序方法做个小结。 参考书籍: 《C++大学教程第七版》P.J.Deitel 《C++语言程序设计》(第4版)郑莉 1、插入排序 思想: 每一步将一个待排元素按其关键字的大小插入到已排序序列的适当位置,直到待排序元素插入为止。 时间复杂度: O() 代码: #include<iostream> using na...原创 2020-04-22 17:17:38 · 731 阅读 · 0 评论 -
线性查找与二分查找
线性查找 思路:从头到尾把数组遍历一遍,直到找到关键值。 时间复杂度:O(n) 代码: #include<iostream> using namespace std; template<typename T> void linearSearch(const T* const array,int size,T keyValue){ for(int i=0;i<...原创 2020-04-21 16:37:28 · 221 阅读 · 0 评论 -
最小邮票数与01背包
最小邮票数与01背包(分别用二维数组和一维数组实现) 题目链接:最小邮票数 题目描述 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。 输入描述: 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数...原创 2020-03-21 10:36:42 · 207 阅读 · 0 评论