
算法
ChaseRaod
这个作者很懒,什么都没留下…
展开
-
【算法】排序算法第一讲:插入排序
排序算法是面试中常考的,常见的排序算法分为以下: 本文要讲的是插入排序:1,直接插入排序直接插入排序的基本思想是将一个数组a[]分为两个部分,其中a[0]为有序区间,a[1]-a[n]为无序区间,依次将无序区间的数插入有序区间中。 时间复杂度:具体代码如下:void InsertSort(int *a, size_t n){ assert(a); for (size_t原创 2017-07-13 20:26:00 · 674 阅读 · 0 评论 -
大数运算
大数运算的实现方法主要有以下几种: 1) 用字符串表示大数。将大数用十进制字符数组表示,然后按照“竖式计算”的思想进行计算。这种方法比较容易理解,但是计算效率比较低。 2) 将大数看成二进制流进行处理。使用各种位运算和逻辑操作来实现打算的运算。该方法设计复杂,可读性较差,而且难以调试。 3) 将大数表示成一个n进制数组。n的取值越大,数组的大小越小,这转载 2018-05-07 11:29:12 · 1110 阅读 · 0 评论 -
非比较排序:计数排序和基数排序
计数排序 计数排序的基本思想: 给一个需要排序的数组,选出数组中的最大值和最小值确定这个数组的范围,新开辟一个这个范围大小的数组空间,这个临时数组中存储的是原来数组中各个元素出现的次数,最后再根据元素出现的次数将元素拷回原数组,此时,原数组有序。 代码实现://计数排序void CountSort(int* a, int n){ assert(a); int max =原创 2017-11-28 17:00:47 · 413 阅读 · 0 评论 -
用哈希算法的思想解决排序和字符串去重问题,时间复杂度为O(N)
第一个题目:int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求对数组a进行排序,要求时间复杂度为O(N) 我们所知道的常规排序中,最优的解法也就是O(N*log2^N),那如何做到时间复杂度为O(N)呢?运用哈希算法的思想就可以优化算法为O(N)void Sort(int* a, int n){ assert(a); con原创 2017-08-06 14:07:04 · 5053 阅读 · 2 评论 -
设计模式:单例模式-懒汉模型和饿汉模型
什么是单例模式?保证一个类只有一个实例,并提供一个访问它的全局访问点。首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为protected或private;最后,需要提供要给全局访问点,就需要在类中定义一个static函数,返回在类内部唯一构造的实例。要求:(1)单例类保证全局只有一个自行创原创 2017-07-31 16:07:03 · 788 阅读 · 0 评论 -
时间复杂度和空间复杂度详解
没有挤公交来上班过,就不知道生活的压力有多大。算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就转载 2017-06-15 09:54:54 · 510 阅读 · 0 评论 -
【算法】排序算法第四讲:归并排序
插入排序,链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/75091908 选择排序,链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/75092407 交换排序,链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/7509497原创 2017-07-14 01:27:02 · 400 阅读 · 0 评论 -
【算法】排序算法第三讲:交换排序
前面我们介绍过了插入排序和选择排序。 插入排序,链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/75091908 选择排序,链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/75092407本文我们学习交换排序。 交换排序分为冒泡排序和快速排序。1,冒泡排序冒泡排序的基本思想相信大原创 2017-07-14 01:04:55 · 565 阅读 · 0 评论 -
【算法】排序算法第二讲:选择排序
前面我们已经介绍过排序算法的归类以及插入排序:链接戳这里:http://blog.youkuaiyun.com/chaseraod/article/details/75091908选择排序分为选择排序和堆排序。1,选择排序选择排序的思想是先让最大数和最小数都为数组第一个数,遍历数组记录每一趟最大或最小数与第一个数进行比较。代码:void SelectSort(int *a, size_t n){ as原创 2017-07-13 20:51:30 · 438 阅读 · 0 评论 -
Source Insight的使用
一、Source Insigth 新建工程 新建一个工程,导入需要查看的代码,可以方便的进行查阅。 新建工程的步骤如下: 在菜单栏中找到【Project】选项,点击打开; 在弹出的菜单栏中选择【New Project】选项; 会弹出一个对话框,在【New project name】中为...转载 2018-05-23 19:05:11 · 393 阅读 · 0 评论