自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 排序_插入排序

以下是插入排序功能实现。(效率低O(n^2),大量数据移动) void Insert(int array[], size_t n) { int temp; size_t i,j; for (i = 1; i < n; i++) { temp = array[i]; for (j = i-1; j >= 0; j--) {

2015-10-09 06:51:03 134

原创 排序_简单选择排序

以下是简单选择排序算法实现,效率低O(n^2)。 typedef int key_t; #define swap(a,b) do{key_t tmp=a;a=b;b=tmp;}while(0) void SimpleSelectSort(key_t array[], size_t n) { size_t swap_index; for (size_t i =

2015-10-07 21:37:45 182

原创 排序_快速排序

以下是快速排序功能实现。(分治策略,平均时间复杂度O(NlogN)) typedef int key_t; #define swap(v1,v2) do{key_t tmp=v1;v1=v2;v2=tmp;}while(0) void QuickSort(key_t array[], int start, int end) { int next_end = end; i

2015-10-07 00:07:53 205

原创 树_最小堆

以下是最小堆添加节点和删除最小节点的功能实现。 特点: A.完全二叉树(降低高度)。 B.充分利用数组存储,通过下标可以直接找到父子关系。 C.插入新元素和/删除最小元素不需要大量移动,最坏只需要进行logN次重新调整即可。 D.获取最小值时间复杂度O(1)。 E.操作过程适合实现优先队列。 F.堆排序时间复杂度O(NlogN)。 class Heap { public

2015-10-05 13:46:15 256

原创 查找_二分查找

以下是二分查找的功能实现,要求有序数组,时间复杂度O(logn),应该是有序数组查找的首选了。 bool BinarySearch(key_t sortArray[], int n, key_t key) { int index1 = 0, index2 = n, mid; while(index1 <= index2) { mid = (index1 + index2)/2;

2015-09-28 22:21:21 197

原创 排序_冒泡排序

以下是冒泡排序的功能实现,时间复杂度O(n^2),算法本身的性能不高。 #define ASC 1 #define DESC 0 #define SWAP(ktype,k1,k2) do { ktype tmp=k1; k1=k2; k2=tmp; }while(0) typedef int key_t; int Compare(key_t k1, key_t k2) { if

2015-09-28 13:42:41 167

原创 位操作_求二进制中1的个数

以下是求x中二进制1的个数的两种方法,第一种是比较常规的逻辑进行循环移位直至为0结束。第二种效率更高些,不需要循环移位,每次只去掉x中的最后一位。(x&(x-1)可实现去除掉最后一位1。另外如果数中1的个数只有一个,那么这个数是2的n次方。) uint8_t Bit1Count_A(unsigned long x) { uint8_t count = 0;

2015-09-28 09:45:02 226

原创 树_二叉排序树

以下是二叉排序树的基本功能实现,由于其时间复杂度可能退化成O(n)等同线性查找,不能保证树的平衡,因此添加、删除、查找操作根据给定的不同数据集会有不同的效率(思想类似快速排序),使用平衡树可以使时间复杂度提高到O(logN). class BSTree { public: typedef int key_t; struct node { key_t key

2015-09-26 20:29:44 153

原创 随机数生成_srand/random

通过系统函数srand/random设置随机种子,产生随机数,功能比较简单。 class Random { public:     Random() { srand(GetNS()); }     Random(unsigned int seed) { srand(seed); }     virtual ~Random() {}     long Get()

2015-09-24 17:28:25 370

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除