def

【程序员笔试面试必会——排序③】高频笔试题、知识点

心已入冬 提交于 2020-12-03 22:54:48
一、小范围排序 题目:   已知一个 几乎有序 的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离要小于k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组 A ,同时给定A的大小 n 和题意中的 k ,请返回排序后的数组。 测试样例:   [2, 1, 4, 3, 6, 5, 8, 7, 10, 9], 10, 2   返回:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 思路:    首先看一下 时间复杂度O(N)的算法,如:计数排序、基数排序,但因为我们不知道数组的范围,所以这些算法就不去考虑了。   然后看一下时间复杂度O(N^2)的算法,如:冒泡排序、选择排序,这两个排序算法是无论要排序的序列是什么顺序,时间复杂度都是严格的O(N^2)。 插入排序 ,这里可以做到很好的程度,因为插入排序的过程与原始顺序有关,每个移动距离不超过k,对本题来说,插入排序的时间复杂度是不会高于O(N*k)。   最后看一下时间复杂度O(N*logN)的算法,如:快速排序,快速排序与原始数据顺序也是无关的,快速排序是随机选一个数,以这个数对整个数组进行划分,划分出来的两个部分再分别进行递归。归并排序,也是与原始数据顺序无关的,归并排序是把所有的组都打散,然后小组合大组,大组再合更大的组,最后使整个数组有序。  

Django的项目的app创建与ORM(Object-relational mapping)的使用

妖精的绣舞 提交于 2020-12-03 22:46:05
Django项目app --> 项目中又分了一级Python包,不同的功能放到不同的包里面 1. 创建app python manage.py startapp app01 创建app 2. 告诉Django创建了一个app INSTALLED_APPS = [ ' app01.apps.App01Config ' , # 告诉Django我自己新建了一个名叫app01的应用 # 'app01' ] 在settings.py找那个的INSTALLED_APPS中添加新创建的app ORM 是Django用来 操作数据库的一种框架 。 其中ORM与数据库的对应关系是: ORM DB 类 数据表 属性 字段 对象 数据行    Django中ORM的使用 1. 用处 1. 操作数据表 2. 操作数据行 2. 使用 1. 手动创建一个数据库 create database mysite; mysql中创建数据库 2. 告诉Django连哪个数据库 DATABASES = { ' default ' : { ' ENGINE ' : ' django.db.backends.mysql ' , # 连接数据库的类型 ' NAME ' : ' mysite ' , # 数据库名 ' HOST ' : ' 127.0.0.1 ' , # 数据库主机地址 ' PORT ' : 3306, #

python--常用函数编写,排名功能

狂风中的少年 提交于 2020-12-03 18:57:59
# coding:utf-8 # author by: acrossyao # Python 3.7.9 import pandas as pd def rank_by_list_res ( listname , ascending= False, method= 'min' ): ''' 对列表中的数据排名 :param listname:list, 列表名字 :param ascending:bool, 降序排明 , 数字越大,排名越靠前 :param method:string, 使用组内最小排名,默认 min :return : 返回排名列表 ''' b = pd.Series(a) rank = b.rank( ascending =ascending , method =method).tolist() rs = map ( int , rank) return rs # 测试 demo if __name__ == '__main__' : a = [ 6 , 1 , 8 , 90 , 1 , 23 , 4 ] # 降序排名 , 取组内最小的排名 rs1 = rank_by_list_res(a) print ( list (rs1)) # 降序排名,取组内最大的排名 rs2 = rank_by_list_res(a ,False, 'max' ) print (

哈工大硕士生实现11种数据降维算法,代码已开源!

▼魔方 西西 提交于 2020-12-03 14:37:37
点击“ 开发者技术前线 ”,选择“星标🔝” 在看|星标|留言, 真爱 来自:相约机器人 编辑:huber 大家好,我是huber! 网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。 01 为什么要进行数据降维? 所谓降维,即用一组个数为 d 的向量 Zi 来代表个数为 D 的向量 Xi 所包含的有用信息,其中 d<D;通俗来讲,即将高维度下降至低维度;将高维数据下降为低维数据。 通常,我们会发现大部分数据集的维度都会高达成百乃至上千,而经典的 MNIST,其维度都是 64。 MNIST 手写数字数据集 但在实际应用中,我们所用到的有用信息却并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,这可能会直接带来极大的「维数灾难」;而数据降维就可以实现: 使得数据集更易使用 确保变量之间彼此独立 降低算法计算运算成本 去除噪音 一旦我们能够正确处理这些信息,正确有效地进行降维,这将大大有助于减少计算量,进而提高机器运作效率。而数据降维,也常应用于文本处理、人脸识别、图片识别、自然语言处理等领域。 02 数据降维原理

Python|动态规划经典案例

五迷三道 提交于 2020-12-02 07:02:04
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 欢迎加入团队圈子!与作者面对面!直接点击! 动态规划原理 动态规划算法将待求解问题拆分成一系列相互交叠的子问题,通过递推关系定义各子问题的求解策略,并随时记录子问题的解,最终获得原始问题的解,避免了对交叠子问题的重复求解。 动态规划要领 在动态规划算法中有三要素,即最优子结构、边界和状态转移函数。 最优子结构:每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到; 边界:问题最小子集的解; 状态转移函数:从一个阶段向另一个阶段过渡的具体模式,描述的是两个相邻子问题之间的关系。 最长上升子序列问题 给定一个无序的整数数组,找到其中最长上升子序列的长度。 1.示例 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 2.解题思路: 状态定义: 创建与输入列表nums相同长度的列表dp,dp[i]的值代表nums前i个数字的最长子序列长度。 3.最优子结构: 当计算dp[i]时,我们需要遍历[0,i)的列表区间做出判断(j∈[0,i)): (1)当nums[i]>nums[j]时,此时为上升子序列,所以此时dp[i]=dp[j]+1 (2) 当nums[i]>nums[j]时

机器学习实战-kNN分类算法(实例)

情到浓时终转凉″ 提交于 2020-12-02 06:33:59
# !/usr/bin/python # -*- coding: UTF-8 -*- # author:Jiang Yaju from numpy import * import operator from os import listdir def createDataSet(): group =array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1 ]]) labels =[ ' A ' , ' A ' , ' B ' , ' B ' ] return group,labels """ inX-用于分类的数据(测试集) dataSet-用于训练的数据(训练集) labels-分类标签 k-KNN算法参数,选择距离最小的k个点 """ def classify0(inX,dataSet,labels,k): # k-近邻算法 dataSetSize = dataSet.shape[0] # numpy函数shape[0]返回dataSet的行数 diffMat = tile(inX,(dataSetSize,1))- dataSet # 在列向量方向上重复inX共1次(横向),行向量方向上重复inX共dataSetSize次(纵向) # 得到特征值之间的差,计算欧氏距离,将输入向量沿行扩展得到差距阵 sqDiffMat = diffMat**2 #

机器学习实战 之 KNN算法

余生颓废 提交于 2020-12-02 06:00:48
现在 机器学习 这么火,小编也忍不住想学习一把。注意,小编是 零基础 哦。 所以,第一步,推荐买一本机器学习的书,我选的是Peter harrigton 的《机器学习实战》。这本书是基于python 2.7的,但是我安装的是python 3.6.2. 所以很关键的是,你必须得有一定的python基础。这里我推荐runoob的py3教程,通俗易懂。http://www.runoob.com/python3/python3-tutorial.html 注意:python2和python3是不兼容的 python是面向 对象 的,面向对象是python的精髓。 ————————————————————严肃的分割线......—————————————————————————————— 言归正传,首先,我们要安装一些包,比如 numpy和matplotlib。小编推荐用 anaconda,这是一个开源的 Python 发行版本,其包含了conda、Python等180多个科学包及其依赖项。下载地址https://www.anaconda.com/download/。这就免去安装各种包的烦恼。   界面如下:里面有一个spyder,这是一款很好用的IDE 左边是文本编辑区,右下角是命令行。右上角是变量区,很方便啊,有木有! 下面就是KNN算法的讲解了。 ———————————————————

python 遇到的小坑

安稳与你 提交于 2020-12-02 05:37:42
由于前端资源紧缺,我的后端系统迟迟等不来它的前端,没办法只好自己来写了。从html,js入门学起,然后照着vue.js的官方教程写了几个实例,从github上clone了一个不错的vue.js模版,填充了一个星期。虽然界面有些丑,但是总算是走通了全部的业务,期间被跨域,跳转,cookie等问题折磨得不要不要的。有时间的话,本螺旋手里剑会总结vue.js开发过程中遇到的问题。 言归正传,本周博主基本没碰python代码,只是修复了一个bug,这个bug很有意思。bug描述为:本次请求的返回结果中总是携带着之前请求的结果,重启服务后bug暂时修复,稍后又会出现。第一感觉是数据库缓存问题,但是我们没有对mysql启用特殊的缓存机制,所以不是缓存问题。第二感觉是执行相关的sql操作之后,结果是否commit立即生效,经过排查commit生效了,也不是这个问题。那就只好debug代码了,最后一个定位到了一个方法的传参问题。 展示问题代码的简化版本 # !/usr/bin/python # -*- coding: utf-8 -*- class TEST(object): def test(self, info, info_list= []): info_list.append(info) return info_list if __name__ == ' __main__ ' : a =

Python爬虫框架

会有一股神秘感。 提交于 2020-12-02 03:38:32
本文章的源代码来源于 https://github.com/Holit/Web-Crawler-Framwork 一、爬虫框架的代码 1 import urllib.request 2 from bs4 import BeautifulSoup 3 import re 4 import time 5 import _thread 6 7 # Input your Url here#################################### 8 BaseURL = ' 127.0.0.1/ ' 9 # ######################################################## 10 TaxURL = " .html " 11 12 # Input your data-saving path ############################ 13 SavePath = "" 14 # ######################################################## 15 16 # Input your threads count ############################### 17 thread_count = 1 18 # ############################

IDEA 链接数据库,自动生成相应的Entity类

老子叫甜甜 提交于 2020-12-01 20:01:25
import com.intellij.database.model.DasTable import com.intellij.database.model.ObjectKind import com.intellij.database.util.Case import com.intellij.database.util.DasUtil import java.io.* import java.text. SimpleDateFormat /* * Available context bindings: * SELECTION Iterable<DasObject> * PROJECT project * FILES files helper */ packageName = "" typeMapping = [ (~ /(?i)tinyint|smallint|mediumint/ ) : "Integer" , (~ /(?i)int/ ) : "Integer" , (~ /(?i)bool|bit/ ) : "Boolean" , (~ /(?i)float|double|decimal|real/ ) : "BigDecimal" , (~ /(?i)datetime|timestamp|date|time/ ) : "Date" , (~ /(?i)blob