自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CPU调度(进程调度)策略

CPU调度CPU调度是多道程序操作系统的基础。通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率。每当CPU空闲时,操作系统必须按照一定的策略从就绪队列当中选择一个进程来执行。 调度的对象:进程或线程。其方式与原则是一样的。所以经常以进程来说明。 那么说CPU调度<=>进程调度调度算法的设计目标面对客户:调度算法的设计目标应该是用户满意。 面对进程:CPU调度的目标应该是进程满意。而让进

2016-04-26 22:33:58 13181

原创 内核级线程

内核级线程与用户级线程的区别用户级线程的ThreadCreate(),Yield(),是用户程序,不进入内核。 而内核级线程的ThreadCreate()是系统调用,会进入内核,TCB在内核中,内核管理TCB。Yiled()用户不可见,调度点由系统决定,在内核级线程中Yield就不叫Yield了,进入了内核叫Schedule。内核级线程阻塞后,内核知道这个进程中的其他线程,会切换到其他线程去。所以

2016-04-25 22:07:32 1251 2

原创 用户级线程

线程的切换在看进程切换前,我们先来看线程的切换吧。 这一篇主要说的是用户级线程的切换。 因为 进程的切换=资源切换+指令执行序列切换。 将资源和指令序列分开看,如果只是从一个执行指令序列切换到另一个执行指令序列,那么这就是线程的切换。线程保留了并发(一个cpu上交替的执行多个程序)的优点,避免了进程切换代价,不需要切资源(映射表),只是切执行指令序列。线程切换的实质就是映射表不变而PC指针变。

2016-04-25 19:27:05 8205 1

原创 char* p与char p[]

5个区:(⊙v⊙)嗯,其实这5个区没啥好说的。但是为了之后要写的内容,先把这5个区简单说一下嘛。栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收

2016-04-21 21:03:20 1661

原创 快速排序递归与非递归实现

算法概述:分而治之。选出一个元素作为主元,它可以把集合中的元素分成两部分,一部分都是大于它的,一部分都小于它的。我们先用伪代码描述。void QuickSort(ElementType A[],int N){ //如果只剩一个元素了直接返回 if(N<2) return; pivot=从A[]选出一个主元; 将S={ A[]\pivot }分成两个独立的子集; A

2016-04-19 23:05:00 735

原创 归并排序的3种实现

归并排序适用于外部排序,是一种稳定的排序。算法很很好的体现了分治法的思想。 时间复杂度O(nlogn)(最好最坏平均都是它) 空间复杂度O(n) (如果使用的是链表,空间复杂度为O(1))数组递归实现:void Merge(int* arr,int* tmp,int left,int right,int rightEnd){ int leftEnd = right-1; int

2016-04-18 22:34:20 636 2

原创 C语言隐式数据类型转换

C的隐式数据类型转换:C语言中发生隐式数据类型转换的4种情况: 1.算数运算式中 2.赋值表达式中 3.函数调用参数传递时 4.函数返回返回值时1.算数运算式中进行算数运算时,不同数据类型必须转换成同一数据类型,才能进行运算。 1、字符必须先转换为整数 2、short型转换为int型 3、float型数据在运算时一律转换为双精度(double)型,以提高运算精度 4、在进行运算时,以

2016-04-17 20:32:29 1400

原创 百度2016研发工程师在线编程题 4.蘑菇阵

题目:在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?输入描述: 第一行N,M,K(2 ≤ N,M

2016-04-16 17:49:56 1756

原创 使序列有序的最少交换次数

题目1:给出一个序列,只交换相邻两数,使得序列升序排列,求出最少交换次数。思路:如果说只是交换相邻两个数字。那么就是这个序列的逆序数。1.假设序列个数为n,我们先把最大的数换到最后,因为是相邻数字交换,所以把最大数交换到最后,需要交换的次数为最大数后的数字个数。2.当完成最大数的交换后,可以将最大数从序列中划去不管了,即此时序列个数为n-1了,我们再在该序列中找到一个最大数,进行相同操作。3.所以使

2016-04-14 16:12:43 14881 2

原创 求最长公共子串

题目:给两个字符串,找出它们的最长的公共子串,跟求最长公共子序列不同,这个是求连续的。思路:动态规划。 dp[i][j]表示字符串a中[0~i]的子串,字符串b中[0~j]的子串,此时的最大长度。 如果a[i]==b[j],那么dp[i][j]=dp[i-1][j-1]+1; 如果a[i]不等于b[j],那么dp[i][j]=0。 变量end存放当前最长公共子串的最后一个元素的下标。 如果

2016-04-12 19:49:00 744

原创 从数组中选出n个数之和为k

LeetCode15. 3Sum题目描述: https://leetcode.com/problems/3sum/Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives th

2016-04-11 20:17:56 7676

原创 电面:给一个数组找出和为k的两个数

如标题所述,其实LeetCode上也有道差不多的题,Two Sum返回这两个数的对应下标。 那我就按LeetCode上那道题来写吧。 先用双指针的方法嘛,不过LeetCode上面是要求返回下标,那么就不能用sort直接对原本的数组进行排序,会影响之前本来的下标。所以得先复制一个数组出来。 双指针没什么好说的,因为已经排好序了,一个从最左端走,一个从最右端走。写这个主要是为学习一下C中的qsor

2016-04-10 01:49:33 2695

原创 求最长公共子序列

题目:给两个字符串a,b,找出他们两的最长公共子序列长度。比如:a = “ABCBDAB”, b = “BDCABA”;则最大子序列长度是4,满足的子序列有B C B A。思路:注意是子序列,不是子串,子序列不要求连续。 动态规划。 dp[i][j]表示字符串a从0~i位置,字符串b从0~j位置,此时的最长公共子序列。如果i位置与j位置对应的字符相同,那么当前位置的LCS的长度等于上一个位置的L

2016-04-09 00:33:00 793

原创 16年腾讯春招--求最长回文子序列长度

题目:求最长回文子序列长度,子序列可不连续。 给一个字符串,找出它的最长的回文子序列的长度。例如,如果给定的序列是“BBABCBCAB“,则输出应该是7,“BABCBAB”是在它的最长回文子序列。 “BBBBB”和“BBCBB”也都是该字符串的回文子序列,但不是最长的。思路:dp[i][j]表示字符串从i到j区间的最长回文子序列长度。 如果str[i]与str[j]相同,则dp[i][j]=dp

2016-04-05 20:01:39 995 2

空空如也

空空如也

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

TA关注的人

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