杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在

要求:时间复杂度小于O(N) 如: 1 2 3 4 5 6 7 8 9 在这个数组中找7,找到则返回1,没找到则返回0int Findnum(int arr[3][3], int key, int rows, int cols) { int row = 0;//右上角下标 ...

2017-06-27 17:39:31

阅读数 697

评论数 1

调整数组使奇数全部位于偶数前面

void move_num(int arr[], int sz) { int left = 0; int right = sz - 1; while (left < right) { while ((left<right) &&a...

2017-06-27 16:56:33

阅读数 254

评论数 0

字符串操作:左旋转字符串,右旋转字符串,判断一个字符串是否是另一个字符串旋转所得

1,左旋字符串: 如:ABCDEFG 左旋3个后得到:DEFGABC第一种方法:void Re_left(char arr[],int k) { while (k--) { int i = 0; char tmp = arr[0]; ...

2017-06-26 16:28:53

阅读数 536

评论数 0

C语言模拟实现库函数atoi

头文件:#include #include <stdio.h> #include <string.h> #include <assert.h> #include <ctype.h> int my_atoi(char const *p) ...

2017-06-24 00:47:16

阅读数 415

评论数 0

C语言实现无头单链表及链表相关面试题(重点!)

链表通常是面试中的重点,本文是用C语言写一个无头单链表,并介绍它的相关面试题的解法。 其中涉及到的面试题如下: 1. 比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? 顺序表:内存中地址连续 长度不可变更 支持随机查找 ...

2017-06-17 23:45:04

阅读数 670

评论数 0

linux进程管理与调度:task_struct结构体

日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux-进程管理与调度 进程是处于执行期的程序以及它所管理的资源(如打开的文...

2017-06-15 10:39:13

阅读数 1483

评论数 0

时间复杂度和空间复杂度详解

没有挤公交来上班过,就不知道生活的压力有多大。 算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间...

2017-06-15 09:54:54

阅读数 331

评论数 0

冒泡排序和选择排序(C++实现)

冒泡排序:从数组的第一个元素开始(arr[0]),两两比较(arr[n],arr[n+1]),如果前面的数大于后面的数,则交换两个元素的位置,把大的数往后移动。经过一轮比较后,最大的数会被交换到最后的位置(arr[n-1])。选择排序:通过比较,选出每一轮中最值元素(最大或最小),然后把它和本轮中...

2017-06-15 00:37:38

阅读数 278

评论数 0

linux:死锁形成原因以及四个必要条件,避免死锁的方法

前面我们已经介绍过线程的基本概念,我们知道,同一个进程中的多个线程共用一份公共资源,这样就有可能造成互相争夺资源互相等待对方让步的问题,若双方都不肯让步,就会一直等待,这就是死锁。死锁形成的原因: (1)系统资源不足,不能满足进程的资源要求,会导致多个线程争夺同一份资源 (2)进程(线程)推进...

2017-06-13 09:41:04

阅读数 1234

评论数 0

linux进程间通信:匿名管道和命名管道

进程间通信的本质是让不同的进程看到一份公共的资源 上图中,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制成为进程间通信。(一)匿名管道 管道是一种最基本的IPC(进程间通信)机制,由pipe函数创建#include<unistd.h> ...

2017-06-09 11:41:59

阅读数 321

评论数 0

linux共享内存

内存共享: 两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。效率: 采用共享内存通信的一个显而易见的好处是效率高,因为进程...

2017-06-08 01:27:01

阅读数 767

评论数 0

linux消息队列实现进程间通信

进程间通信(IPC):进程间通信的本质就是通过让不同的进程看到一份公共的资源来实现通信。 常用的进程间通信的方式有两种:通过管道和systemv标准,今天我们来介绍systemv标准中的一种:消息队列 消息队列:消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法,每个数据块都认为是有...

2017-06-07 22:22:30

阅读数 1307

评论数 0

Linux线程的基础知识

之前我们已经介绍过进程的基本概念,那么线程是什么? 线程是进程内部的一个执行分支,举个栗子:比如一个项目的完成是多个团队之间的合作,和每个团队都是这个项目运行的一个分支。即线程是进程内部的执行分支。进程的特点: (1)系统中程序执行和资源分配的基本单位 (2)每个进程都有自己的数据段、代码段...

2017-06-07 01:24:59

阅读数 392

评论数 0

数据结构 二叉树(binarytree)的实现

我们先来介绍一些关于树的概念:节点:结点包含数据和指向其它节点的指针。 根节点:树第一个结点称为根节点。 结点的度:结点拥有的子节点个数。 叶节点:没有子节点的节点(度为0)。 父子节点:一个节点father指向另一个节点child,则child为孩子节点,father为父亲节点 。 兄...

2017-06-02 17:53:43

阅读数 436

评论数 0

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