原创 哈希表(散列表)查找

一、原理:存儲位置與關鍵字一一映射。 散列技術是在記錄的存儲位置和它的關鍵字之間建立起一個確定的對應關係f,使每個關鍵字key對應一個存儲位置f(key)。 f爲散列函數,又稱哈希函數。採用散列技術將記錄存儲在一塊連續的存儲空間中

原创 插值查找(改進版的二分/折半查找)

這兩種查找方式都是針對於靜態查找,同時不適用於需要頻繁增刪的數組,因爲維護數據的序會是一個很大的負擔。同時插值查找也不適用於分佈極端不均勻的數組 二分/折半查找 int binary_search(int *a, int n, i

原创 Python解決TCP黏包問題

以控制命令行爲例 struct模塊可以將任意類型轉換爲一個固定長度的bytes Server端 import socket import struct sk = socket.socket() sk.bind(('127.0.0.

原创 python使用socket實現文件傳輸功能

本例中以client作爲發送端 server作爲接收端 #server import socket import json import struct import os sk = socket.socket() #避免服務器重啓

原创 O(n^2)的排序(冒泡,選擇,插入排序)

1、冒泡排序 基本思想: 兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序爲止。 //基礎冒牌排序 void BubbleSort(List *L){ int i, j; for(i = 1; i < L

原创 斐波那契查找

利用斐波那契數列的黃金分割原理對二分和插值查找的改進 二分,插值查找:https://blog.csdn.net/TinnCHEN/article/details/104437976 首先我們定義一個斐波那契數列 F = {0,1

原创 數組中差爲K的對數/K-diff Pairs in an Array(C++)

Problem: Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the arr

原创 KMP模式匹配算法

KMP模式匹配算法改進:https://blog.csdn.net/TinnCHEN/article/details/93472761 意義:當子串有多個相同部分時,與樸素模式匹配算法相比,大大減少了循環次數。時間複雜度由O((n

原创 KMP模式匹配算法改進

KMP模式匹配算法: https://blog.csdn.net/TinnCHEN/article/details/93459873 KMP模式匹配算法改進:對於next 數組進行了改進。 當子串在重複部分匹配失敗時,我們發現之前

原创 c++primer——重載運算與類型轉換

1、重載的運算符是具有特殊名字的函數。對於一個運算符來說,它或者是函數成員,或者至少含有一個類類型的參數。我們只能重載已有的運算符。無法重載這個四個運算符: :: .* . ?: 2、部分制定了運算對象求職順序的運算符不該被重載,特別

原创 拷貝控制c++primer13章

1、一個類通過定義五種特殊的成員函數來啊控制這些操作:拷貝構造函數、拷貝賦值運算符、移動構造函數、移動賦值運算符、析構函數。 2、拷貝構造函數:如果一個構造函數的第一個參數是自身類類型的引用,且任何額外參數都有默認值,則此構造函數是拷

原创 自定義簡易string類c++primer13.44

頭文件 #pragma warning(disable:4996) //可參考上一篇解決c4996問題的博客 #include<iostream> #include<memory> #include<algorithm> #inclu

原创 文本查詢程序c++primer12.32

頭文件StrBlob以及StrBlobPtr //根據題目要求用自己定義的StrBlob來代替vector<string>來保存輸入文件 //可以更加安全的共享底層數據 #include<iostream> #include<vect

原创 c++動態內存智能指針及weak_ptr用法的理解

靜態內存 1、靜態內存:用來保存局部static對象(第一次經過時初始化直到程序終止才銷燬,貫穿函數調用及之後的時間)、類static數據成員(與類本身相關與類對象無關,不能爲const,不包含this)以及定義在任何函數之外的變量。

原创 c++primer——關聯容器的使用

一、順序關聯容器 (一)、容器的種類 順序關聯容器有四種: 可以按照關鍵字是否重複分爲兩類: 1、不重複: map:保存key-value set:保存key 2、可以重複: multimap:保存key-value multiset