Decorative image frame

寒流‘s Blog

编程与生活

寒流‘s Blog

Category添加属性所想到的

iOS中category和extension相辅相成,长得也很相似。category与extension的主要区别:

Category:分类、类别

  • category主要用来增加类的方法,并且适用于子类。
  • category不能添加实例变量(这个并不是属性),可以添加readonly的属性。
  • 如果要添加readwrite的属性的话,需要用到runtime方法。

Extension:扩展

  • 可以增加被扩展类的属性和方法。
  • Extension可以理解为匿名类别。
  • 定义的方法必须在implementation中实现。
Read More...

常用排序算法

在此总结一下常用排序算法的代码实现

#include <iostream>
using namespace std;
typedef int ElemType;

/*
1、插入排序
(1)直接插入排序算法
算法思想:将等排序列划分为有序与无序两部分,然后再依次将无序部分插入到已经有序的部分,最后

就可以形成有序序列。
操作步骤如下:
1)查找出元素L(i)在表中的插入位置K;
2)将表中的第K个元素之前的元素依次后移一个位置;
3)将L(i)复制到L(K)。
*/
时间复杂度为:O(n^2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void InsertSort(ElemType arr[], int length)
{
int i, j;
ElemType guard; // 哨兵

for (i = 1; i < length; ++i)
{
if (arr[i]() < arr[i-1]()) // 在无序部分寻找一个元素,使之插入到有序部分后仍然有序
{
guard = arr[i]();// 复制到“哨兵”
// 将第i个元素之前的元素依次后移一个位置
for (j = i - 1; arr[j]() > guard; j--)
{
arr[j + 1]() = arr[j]();
}

arr[j + 1]() = guard; // 复制到插入位置
}
}
}
Read More...