
Data structure and algorithm
hjhomw
今天的苦逼是为了不这样一直苦逼下去,坚持,坚持,坚持!
展开
-
基本排序算法
代码:#include <iostream> #include <vector> #include <algorithm>using namespace std;/*---------------------------改进冒泡排序------------------------------------*/ // 算法复杂度O(n^2) vector<int> BubbleSort(vector<i原创 2016-08-29 14:16:30 · 482 阅读 · 0 评论 -
不使用用库函数将整数转换为字符串
//不使用用库函数将整数转换为字符串#include <iostream> #include <string> using namespace std;string IntoStr(int num) { int temp = 0; int sign = 0; string str = "",result = ""; //先判断正负 if (num < 0)原创 2016-08-12 18:46:55 · 933 阅读 · 0 评论 -
整数十进制转换为二进制和十六进制
#include <stdio.h> #include <stdlib.h>char* DecToBin(int num) { char* buffer = (char*)malloc(33*sizeof(char)); char* temp = buffer; int n = 0; for (int i = 0; i < 32; i++) {原创 2016-08-12 22:02:09 · 384 阅读 · 0 评论 -
哈希表
一、散列函数的构造方法:1.直接定址法 例,f(key) = a * key + b(a, b 为常数) 简单但不常用2.数字分析法如果关键字是位数较多的数字,抽取关键字的一部分来计算散列存储位置。还可以对抽取出来的数字再进行反转,右环位移等方法。应用场景:通常适合处理关键字位数比较大的情况,如果事先知道关键字的分布且关键字的若干位分布较均匀,可以考虑使用这个方法。3.平方取中法计算数字的平方,原创 2016-09-23 17:10:11 · 268 阅读 · 0 评论 -
常用查找算法总结
查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)查找表按照操作方式分为静态查找表和动态查找表。静态查找表:只作查找操作的查找表。它的主要操作是: (1)查询某个“特定的”元素是否在查找表中 (2)检索某个“特定的”数据元素和各种属性动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。它的主要操作是: (1)查找时插原创 2016-09-25 17:08:35 · 2094 阅读 · 1 评论 -
交换字符串
代码:#include <iostream> using namespace std;//交换两个字符串,通过引用 void Swap(char*& str1, char*& str2) { char* temp = str1; str1 = str2; str2 = temp; }//交换两个字符串,通过二级指针 void Swap2(char** str1, char**原创 2016-10-21 16:43:49 · 988 阅读 · 0 评论 -
Dijkstra不能得到含有负权边图的单源最短路径
Dijkstra算法当中将节点分为已求得最短路径的集合(记为S)和未确定最短路径的个集合(记为U),归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S内某点(记为a)以负边相连的点(记为b)确定其最短路径时,它的最短路径长度加上这条负边的权值结果小于a原先确定的最短路径长度,而此时a在Dijkstra算法下是无法更新的,由此便可能得不到正确的结果。求带负权值边转载 2016-11-07 16:07:11 · 2974 阅读 · 0 评论