代皓 Blog

要么庸俗 要么孤独.

排序算法之直接插入排序

直接插入排序

思想 插入排序的主要思想是,每次取待排序的数组中的第一个元素,去和已经排好序的数组进行比较,插入到合适的位置。 所以,插入排序将数组分为了两个部分,一个部分是已经排好序的,另一个部分是待排序数列。 举例 第一次,选择第一个元素作为已排序数组,然后将第二个元素与已排序的数组的第一个元素进行比较,确定位置。 接着,第三个元素与已排序的两个元素进行比较,确定位置。 因此,按照这种思想,总共要...

排序算法之冒泡排序

冒泡排序

思想 冒泡排序的思想就是,两两比较相邻的两个数,按照升序或者降序进行交换。这样交换一趟之后,最大或者最小的数字就被交换到最后一位, 接着从头开始,继续进行迭代的比较,直到倒数第二位,以此类推。 例子 例如要对 6 7 4 1 5 9 进行升序的冒泡排序操作,过程如下: 第一趟 第一次比较6和7 6 < 7,不交换 交换前状态 ...

重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析 前序遍历的顺序是“根->左->右”,中序遍历的顺序是“左->根->右”。因此,前序遍历的第一个数就是二叉...

输入n个整数,找出其中最小的K个数

输入n个整数,找出其中最小的K个数

题目 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 分析 当有海量的数据的时候,我们可以创建一个容器来存放k个数,然后将剩余的n-k个数,每一个与容器中最大的数进行比较,加入比最大的数大,就进行替换,否则就继续进行比较,直到数组的最后一个元素。 思考一 利用何种容器进行存储数据。这里我们选...

数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字

题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 分析 一个数组,我们很容易想到的是,直接对数据进行升序排列,而排序算法最好的平均时间复杂度是O(nlogn)。还有没有更快的算法呢?假如我们去遍历数组,然后每次都记...

字符串的排列

输入一个字符串,按字典序打印出该字符串中字符的所有排列

题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 要求 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 分析 假如我们固定第一个字母,然后依次将第一个字母依次与子串中的其他字母进行交换。也就是固定第一个字母,只需要求出后...

项目上线了,累并开心

好好看书

项目做完了,也提交了App Store,几个月的辛劳也算是得偿所愿,赚的钱并不重要,重要的是学到了东西,提高了自身能力和信心。 妹妹也顺利的考上了心仪的高中,算是了却了一桩心事。今年对于家里来说,是很特别的一年,一是妹妹中考,二是我找工作,既然妹妹已经考上了,接下来就看我的了,所以,好好努力吧。

二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表

题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求 要求不能创建任何新的结点,只能调整树中结点指针的指向。 分析 要搞明白二叉搜索树的概念,二叉搜索树(BST),主要用来实现搜索,它的左子树元素小于根节点的元素,右节点的元素大于根节点的元素。 普通二叉树的搜索时间复杂度为O(n),二叉搜索树的平均搜索时间复杂度变为O(logn)。 搜索二叉树举例: ...

封装好的可设置标题、正文字体的默认样式UIAlertController

封装好的UIAlertController

iOS8之后,主要使用UIAlertController进行信息的显示,而默认的样式使用的比较多,所以封装了一个,以方便以后使用。 调用以下函数即可,参数需要自己设置: -(void)showIntroDuction:(NSString *)title :(NSString *)showText :(NSString *)btnStr :(UIFont *)titleFon...

UITableViewCell以及其子控件自适应高度

iOS开发中会用到很多的uitableviewCell,而这些cell中往往都含有很多子控件,例如UIlabel,很多时候会有需求:根据文字的多少,自适应UILabel 的高度,从而自适应cell的高度。 需求 例如: 这是已经的收件箱的cell显示。 另外一种是未读的收件箱的显示,如下图所示: 分析 对于未读的信息的显示,最开始考虑的是将前面的小圆点设置成一个UI...