- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 数据结构之希尔排序
希尔排序的思想是先将待排序列分割成若干个子序列分别进行插入排序,待整个序列基本有序时,再对整个序列进行直接插入排序。其实现如下:void shell_sort(int *array, int length){ int gap = 0; int i = 0; int j = 0; int value = 0; for(gap = length / 2; gap
2016-07-24 23:58:49 215
原创 数据结构之插入排序
插入排序就是将元素插入已经排好序的序列中。其实现如下:void insert_sort(int *array, int length){ int i = 0; int value = 0; int j = 0; for(i = 1; i < length; ++i) { value = array[i]; for(j = i -
2016-07-24 23:47:02 185
原创 a 与 &a 的区别
相信大家会经常遇到指针加一的情况,而且差不多每次遇到都会傻眼吧,不过没关系,现在我们来一起谈谈吧^_^举个例子来解说吧:int main(){ int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a + 1); printf("%d, %d\n", *(a + 1), *(ptr - 1)); return 0;}大家要注意:对
2016-07-21 10:48:26 1757
原创 数据结构之选择排序<select_sort>
选择排序其实就是将待排序列的第一个记录标记为最小,然后将其与剩余的其他记录比较找到最小的并交换,然后将标记后移并和剩余的其他记录比较其实现如下:void select_sort(int *array, int length){ int min_index = 0; //标记最小值下标 int i = 0; int j = 0; int temp = 0;
2016-07-21 10:15:16 414
原创 如何判断大小端
大端模式: 字数据的高字节存储在低地址中,而字数据的低字节存储在高地址中。(高低低高)小端模式: 字数据的高字节存储在高地址中,而字数据的低字节存储在低地址中。(高高低低)大端模式的内存布局如下: int i = 1 —————————————> 高地址 0x0 0x0 0x0 0x1小端模式的内存布局如下:
2016-07-20 10:20:20 531
原创 memcpy()函数与memmove()函数
void *memcpy(void *dest, const void *src, size_t n)功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置处。函数说明: 1> src 和 dest 所指的内存区域可能重叠,但是如果src 和 dest 所指的内存区域重叠,memcpy()函数并不能确保src所在重叠区域在被拷贝之前不被覆盖,这种情况可以使
2016-07-20 09:43:39 292
原创 strspn()函数和strcspn()函数
size_t strspn(const char *s, const char *accept)功能: 用来计算字符串s中从头开始连续有几个字符都属于字符串accept。函数说明: strspn() 从参数s字符串的开头计算连续的字符,而这些字符都完全是accept所值字符串中的字符。即就是说,若strspn()的返回值为n,就说明字符串s开头连续有n个字符都是属于字符串accept内的字符。返回值
2016-07-20 08:47:58 1020
原创 strstr()函数
char *strstr(const char *haystack, const char *needle)参数说明: haystack 为一个源字符串指针, needle为一个目的字符串的指针。。函数功能: 从字符串haystack中寻找needle第一次出现的位置,但是不比较结束符NULL。返回值说明: 成功返回第一次出现needle位置的指针,否则返回NULL。
2016-07-19 09:28:27 296
原创 strchr()函数与strrchr()函数的实现
char *strchr(const char *s, int c) 功能: 查找字符串s中首次出现c字符的位置说明: 返回首次出现c的位置的指针,返回的地址是被查找的字符串指针开始的第一个与c相同字符的指针,若s中不存在c则返回NULL。。。。返回值: 成功返回要查找的字符第一次出现的位置,否则返回NULL。。。。以下是自己实现的strchr()函数:char *my_strchr(const
2016-07-19 08:52:41 12639 1
原创 strcat()和strncat()函数的实现
char *strcat(char *dest, const char *src) 该函数的功能是连接字符串src和dest,将src的内容接入到dest的后面,要求dest和src无重叠,并且dest有足够的空间容纳src。char *my_strcat(char *dest, const char *src){}char *strncat(char *dest, const
2016-07-18 23:38:38 978
原创 strcmp()和strncmp()函数的实现
int strcmp(const char *s1, const char *s2) 该函数的功能是比较字符串s1和s2的大小,从左向右比较(按ASCII值的大小进行比较),直到出现不同的字符或遇到‘\0’为止。int strcmp(const char *s1, const char *s2){ if(s1== NULL || s2 == NULL) { r
2016-07-18 23:26:32 1037
原创 strcpy()函数与strncpy()函数实现
char *strcpy(char *dest, const char *src) 该函数是将字符串src拷贝至dest其实现如下:char *my_strcpy(char *dest, const char *src){ if(dest == NULL || src == NULL) { return dest; } while((*dest++
2016-07-18 23:05:11 313 1
原创 函数strlen()的实现
size_t strlen(const char *s) 函数用来求得字符串s的长度该函数的实现如下:size_t strlen(const char *s){ if(s == NULL) { return 0; } int count = 0; while(*s++ != '\0') { count++;
2016-07-18 22:55:01 1224
原创 字符串的扩展
这里所说的扩展是: 例如 “-a-c-f” —-> “abcdef”void str_expand(char *dest_str, const char *src_str){ if(dest_str == NULL || src_str == NULL) { return ; } char *dest = dest_str; const c
2016-07-18 22:46:15 277
原创 将字符串中的空格替换为%20
这种替换问题要考虑是否会覆盖原字符串,若是在源字符串上直接替换。看到这个问题我觉得很多人都会想到直接从头开始替换,即遇到空格就将其替换为%20,每次都要将空格后的字符后移两个字节。这种解法的时间复杂度为O(n^2)!!!另外一种较好的解法是从后往前替换,具体做法是从头遍历计算所有空格数,计算出总的长度。 该解法的前提条件是若在源字符串上替换就要求源字符串有足够的空间来容纳新的字符串。时间复杂度
2016-07-18 22:34:28 1171
原创 获取二进制中1的个数
这是我写的第一种解决方案,你看看有什么问题^_^int NumberOf1(int n){ int count = 0; while(n){ if(n & 1){ count++; } n = n >> 1; } return count; }这种解法是将数据n每次右移一位和1进行&运算来
2016-07-18 21:02:37 5654
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人