自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分查找注意点

二分查找的前提: 已序序列 正确算法: int binary_sort(int arr[], int length, int value) { if(arr == NULL || length == 0) return -1; int ret = -1; int left = 0; int right = length-1;

2013-05-28 17:02:44 706

原创 第17题:

在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b                                                                     如果从头遍历,与后面字符进行比较出现次数是否为1,算法复杂度为O(n^2), 考虑以空间换时间,因为一个字符占8位。因此可用一个256位数组保存每个字符出现的次数 char

2013-05-24 16:04:23 649

原创 第14题:

题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。 思路: 2个指针,分别从两边向中间移动,相加找到退出。 void findtwonum

2013-05-21 16:30:16 538

原创 第13题: 题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。

链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 算法实现 ListNode* FindLastK(ListNode* head, int k){ ListNode* p1=head, *p2=head; int nNode=0; while(p1->m_pNext

2013-05-21 16:09:38 1209

原创 翻转句子中单词的顺序。

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I” void reverseOrder(char pStr[], int begin, int end) { if(begin >= end)

2013-05-16 15:42:12 656

原创 选择排序 实现

插入排序基本原理: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕 时间复杂度:n^2 稳定排序 算法实现 void SelectionSort(int arr[], int len) { for(int i=0; i<len-1; i++)

2013-05-16 12:07:45 521

原创 算法时间复杂度计算

定义: 算法中基本操作重复执行的次数是问题规模n的某个函数 计算循环次数k和循环变量之间的关系 具体步骤可以简化为: 1. 找到执行次数最多的语句 2. 计算语句执行次数的数量级 3. 用大O来表示结果 例1: int Sum1( int n ) { int p=1, sum=0, m ; for (m=1; m<=n; m++) {

2013-05-10 15:52:15 1038

空空如也

空空如也

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

TA关注的人

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