人人都来写算法
文章平均质量分 64
WalleFu
希望做一个思想自由的人, 通过自己的努力给家人提供一个舒适的生活条件,并有能力帮助和影响周围的朋友。
展开
-
人人都来写算法 之 归并有序数组,(要求:利用原数组,且时间复杂度O(n)
题目:数组A空间大小为m+n,数组A中保存着n个以升序的整数元素。数组B中保存着m个升序的整数元素。请将数组B插入数组A中且使A仍有序,且时间复杂度最小。分析:因为数组已经有序,且数组A的空间刚好够存储插入的数组B,因此我们的思路是利用两个数组已经有序的特性,从大到小依次取出并比较和插入。下标变量 index_a 初始值为n-1,代表数组A的最后一个位置。原创 2013-05-04 15:32:03 · 1417 阅读 · 1 评论 -
【重构】人人都来写算法 之 矩阵顺时针旋转90度,空间效率O(1),时间效率O(n*n)
对之前的代码进行了重构,虽然使用指针操作二维数组在可读性上没有原来的二维下标访问清晰,但是为了消除重复也只能这样了。原文链接:http://blog.csdn.net/walle_love_eva/article/details/9951977原创 2014-03-11 17:54:11 · 1747 阅读 · 0 评论 -
人人都来写算法 之 矩阵顺时针旋转90度,空间效率O(1),时间效率O(n*n)
给你一个矩形图片,假设每位像素是用整形标识,将图片位图顺时针旋转90度。空间复杂度O(i), 时间复杂度O(n*n)两种方案可以选择:1. 利用图片矩形的特性,将其剥洋葱一样,一层一层处理,每一层逐个将四条边顺时针交换;2. 先将图片上下翻转矩阵,所有元素再在沿着主对角线交换位置即可。(当然,也可以先沿着主对角线交换,再左右翻转矩阵)原创 2013-08-13 17:38:03 · 3734 阅读 · 0 评论 -
人人都来写算法 之 移除字符串中重复的字符,时间复杂度要求O(n),空间复杂度O(1)
移除字符串中重复的字符,不能使用额外的缓存空间。字符串支持所有的ASCII码字符。注意: 时间复杂度要求O(n),空间复杂度O(1),可以使用额外的一个或几个变量,但不允许额外再开一个数组拷贝。分析:1. 时间复杂度为O(n)条件下,最佳的方法就是采用包含256个位置寻址的哈希表来表示ASCII码。但是条件中又限制只能使用几个变量,因此采用bit寻址的方法可能是最接近原创 2013-08-13 17:48:53 · 2120 阅读 · 0 评论 -
人人都来写算法 之 在旋转数组中查找值并返回该值在数组中的位置
题目:一个数组有n个整数,对它进行升序排序,但是被旋转了未知次,给出一个O(logn)的算法找到特定值元素的数组下标。#include using std::cout;using std::endl;int search(int a[], int low, int high, int x){ const int notExsit = -1;原创 2013-08-09 17:53:06 · 1218 阅读 · 0 评论 -
人人都来学算法 之 冒泡排序
冒牌排序是大学学习数据结构最先学习的排序算法,平均时间效率较快速排序等方法效率低,但是算法也最简单,就是每次遍历都把最大的元素(升序)交换到当前的最后一个位置。这个算法也是笔试中最最常见,难度也是考察编程能力的最低要求。#include using std::cout;using std::endl;void bubbleSort原创 2013-06-12 17:41:21 · 902 阅读 · 0 评论 -
人人都来写算法 之 求子数组的最大和
题目:求子数组的最大和:输入一个整数数组,数组中有正有负,求所有子数组的和的最大值。#include using std::cout;using std::endl;bool FindGreatestSumOfSubArray(int data[], int length, int &greatestSum){ if((data =原创 2013-06-12 18:09:29 · 984 阅读 · 0 评论 -
人人都来写算法 之 选择排序
#include using std::cout;using std::endl;/** Selection Sort**/int findMaxItemIndex(int dataList[], int leftPos, int rightPos){ int maxPos = leftPos; int currentPos= leftPos原创 2013-06-09 21:39:27 · 818 阅读 · 0 评论 -
人人都来写算法 之 插入排序
最近写博客的时间明显减少了,自己要反思一下,利用下班的一点时间,写了插入排序的算法实现,供大家参考。也自省一下:学习如逆水行舟,不进则退!这里还是以最简单的整型数组为例,随后再分析一下list结构的插入排序。CSDN的代码粘贴显示效果不是太好,还是用自己喜欢的格式吧,代码为了方便复制,附后。#include using std::co原创 2013-06-08 18:17:00 · 1053 阅读 · 0 评论 -
人人都来写算法 之 快速排序
中午吃饭比较早,利用20分钟把快速排序写了下,以说明算法为主,采用int数组存储数据。后续可以在以下两点优化程序:1. 采用模板编程,支持通用数据类型;2. 采用函数指针或者函数对象决定排序方式。#include using std::cout;using std::endl;/** Quick Sort **原创 2013-06-09 12:20:25 · 906 阅读 · 0 评论