算法
pengshengli
横看成峰侧成岭,远近高低各不同。
不识庐山真面目,只缘身在此山中。
展开
-
冒泡排序和选择排序的区别?
在一次写选择排序算法的时候,发现和冒泡没啥区别,后来发现写错了,写的就是冒泡而非选择。先看一下期初的代码:template<typename T>vector<T> selectionSort(vector<T> &arr){ for (int i = 0; i < arr.size(); i++) { int minIndex ...原创 2018-10-24 14:30:09 · 1863 阅读 · 0 评论 -
剑指2题目汇总(三)
39.数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,找出这个数字思路一:排序数组,位于中位数的就是要找的数字,时间复杂度为O(nlogn)思路二:快排思想,当下标为n/2时则找到该数字,时间复杂度为O(n)思路三:遍历数组,和上次数字相同的加1,不同减1,如果为0,时间复杂度为O(n)// 039_MoreThanHalfNum.cpp : ...原创 2019-06-03 22:55:39 · 220 阅读 · 0 评论 -
剑指2题目汇总(二)
16.数值的整数次方题目:实现double pow(double n, int e)函数思路一:循环乘,但注意指数小于1的情况(e为0或负数)思路二:// 016_Pow.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//=============================================================...原创 2019-06-03 20:29:53 · 177 阅读 · 0 评论 -
剑指2题目汇总(一)
1.赋值运算符重载赋值运算符函数的参数为const引用类型;----->若类型为类,会产生临时对象,调用复制构造函数。 赋值运算符函数的返回值为引用类型;----->若类型为类,则连续赋值语句编译不通过(类型不匹配)、会产生临时对象,调用复制构造函数。 检查赋值的对象是否和this是同一个;-----> 赋值的对象和this不是同以对象,则需要先释放原有对象;-----...原创 2019-06-03 20:19:36 · 220 阅读 · 0 评论 -
二分查找
时间复杂度O(logn)二分查找必须先要给序列排序,也就是说要使用二分查找算法,序列必须是有序的。1.普通的二分查找 LeetCode 704. 二分查找class Solution {public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size...原创 2019-05-26 18:25:55 · 264 阅读 · 0 评论 -
数据结构与算法知识点
一、数据结构数组一种线性表结构,连续的内存空间存储相同数据类型的数据。说到线性表,有必要列出一下:名称 种类 线性表 数组、链表、队列、栈 非线性表 二叉树、堆、图 数组最大的优势是:可以通过下标随机访问,时间复杂度为O(1)(由于线性的,且内存空间连续)。 数组劣势是:删除和插入比较费劲,时间复杂度为O(n)(需要移动删除和插...原创 2019-05-25 15:32:40 · 801 阅读 · 0 评论 -
常用字符串函数的实现
一、库函数的实现1.strcpy#include<stdio.h>#include<assert.h>//1.strcpy*******char* strcpy(char* dest, const char* source){ assert((dest != NULL) && (source != NULL)); char* res =...原创 2019-05-20 23:19:31 · 171 阅读 · 0 评论 -
排序
1.冒泡排序(O(n2) 稳定)2.插入排序(O(n2) 稳定)3.选择排序(O(n2) 不稳定)4.归并排序(O(nlogn) 稳定)5.快速排序(O(nlogn) 不稳定)// sort.cpp: 定义控制台应用程序的入口点。////#define _CRT_SECURE_NO_WARNINGS#define INC_03_SELECTION_SORT_DETECT...原创 2019-05-04 19:50:59 · 164 阅读 · 0 评论 -
对递归的理解【笔录】
数据结构和算法的学习,最难掌握的有两个,一个是动态规划,另一个则是递归。 实际工程中递归的应用非常广泛,也是开发者经常被考察的重点。1.理解“递归” 有这样一个场景,假设你在排队,前面排了很多人,但不知道自己排的是第几(每个人都不知道自己是第几名,除了第一个知道自己是第一名)。当你想知道你排第几的时候怎么做?当然你可以从第一个开始数(遍历一遍),还有一种方案就是偷懒的...原创 2019-03-15 09:06:11 · 235 阅读 · 0 评论 -
第k个排列(C++)
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:"123" "132" "213" "231" "312" "321"给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。示例 1:输入: n = 3原创 2019-01-04 17:11:29 · 2087 阅读 · 1 评论 -
155. Min Stack (C++ vector)
155. Min Stack Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) -- Push element x onto stack. pop() -- Removes the element on top of the ...原创 2018-12-11 11:30:14 · 216 阅读 · 0 评论 -
71. 简化路径(C++)
给定一个文档 (Unix-style) 的完全路径,请进行路径简化。例如,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"边界情况:你是否考虑了 路径 = "/../" 的情况? 在这种情况下,你需返回 "/" 。 此外,路径中也可能包含多个斜杠 '/' ,如 "/原创 2018-12-20 17:08:48 · 549 阅读 · 0 评论 -
链表的基本操作(C++)
#include "stdafx.h"#include<iostream>#include<vector>using namespace std;template <typename T>struct Node { T data; Node<T> *next;};template <typename T>Node&l..原创 2018-12-20 17:02:58 · 410 阅读 · 0 评论 -
3. 无重复字符的最长子串(C++)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2018-12-05 15:18:55 · 534 阅读 · 0 评论 -
“冒泡排序”的门道
首先纠正以下另外一篇博客如下:https://blog.csdn.net/pengshengli/article/details/83625033其中冒泡排序是不正确的,这个既不是冒泡排序也不是选择排序,是什么我也不知。找了以下冒泡排序的讨论,几个比较靠谱的:也就是说,冒泡排序需要加上额外的操作,才能在最好的情况下时间复杂度为O(N)。参考:https://ww...原创 2018-11-28 14:38:54 · 96 阅读 · 0 评论 -
C++二叉树操作集锦
* 测试用例: * * 10 * / \ * 5 -3 * / \ \ * 3 2 11 * / \ \ * 3 -2 1 *****************/// binaryTree.cpp: 定义控制台应用程序的入口点。/...原创 2018-12-04 16:45:31 · 226 阅读 · 0 评论 -
冒泡排序、插入排序、选择排序、归并排序、快速排序
排序的动态图演示和总结可参考:https://www.cnblogs.com/eniac12/p/5329396.html https://www.cnblogs.com/onepixel/articles/7674659.html下面提供源代码文件,运行环境VS,我用的V...原创 2018-11-01 19:11:57 · 1592 阅读 · 1 评论 -
归并排序
//归并排序******************************************template<typename T>void mergeSort(vector<T> &arr, int start, int end){ if (end - start < 1) return; int mid = (end + start) / ...原创 2018-10-30 19:51:55 · 208 阅读 · 0 评论 -
结构体(类)类型排序
struct heat { heat(double a, double b, double c) :h1(a), h2(b), h3(c) {} double h1; double h2; double h3;};bool comp(heat a, heat b){ if (fabsf(a.h1 - b.h1) > 0.000001) { if (a.h1 - b.h...原创 2019-09-22 23:54:18 · 288 阅读 · 0 评论