自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jjjcainiao的专栏

Program is Art

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 插入排序和希尔(Shell)排序

【插入排序】数组前k-1个元素已经有序,如何确定第k个元素的插入位置,使得这k个元素有序。方法1:从左到右扫描扫描这个有序子数组,直到遇到第一个大于等于A[k]的元素,然后把A[k]插在这个元素的前面。方法2:从右到左扫描这个有序子数组,直到遇到第一个小于等于A[k]的元素,然后把A[k]插在这个元素的后面。【希尔排序】先将数组分组,分别对每组进行插入排序,依次减少分组数进行插

2014-04-27 22:17:09 815

原创 二分查找

【二分查找】针对有序数组,性能非常好。【时间复杂度】logn【代码】#include #include //非递归实现二分查找int BinarySearch1(int a[], int n, int key){ int left, right; int mid; left = 0; right = n - 1; while(left <= right)

2014-04-27 14:45:49 779

原创 荷兰国旗问题

【算法设计与分析基础4.2-9】荷兰国旗问题要求对字符R、W和B构成的任意数组排序(红、白和蓝是荷兰国旗的颜色),使得所有R排在最前面,W随后,B在最后。为该问题设计一个线性效率的在位算法。【算法】假设数组的状态如下A[0] ... A[r-1] A[r] ... A[w -1] A[w] ... A[b]   A[b+1] ... A[n -1]     全部填R

2014-04-25 20:54:01 2920

原创 快速排序

【快速排序】【算法】分治法【时间复杂度】nlogn【代码】#include #include //挖坑填数void QuickSort1(int a[], int left, int right){ if(left < right) { int i, j; int tmp; tmp = a[left]; i = left; j = righ

2014-04-25 19:43:30 738

原创 选择排序和冒泡排序

【选择排序和冒泡排序】【算法】蛮力法选择排序,第一次扫描整个数组,找到最小元素,然后和第一个元素交换。第二次从第二个元素开始扫描数组,找到剩下的元素中最小的与第二个元素交换位置,直到最后。|  89  45  68  90  29  34  17  17 | 45  68  90  29  34  89  17  29 | 68  90  45  34  89  17

2014-04-24 22:54:50 652

原创 合并排序

【合并排序】【算法】分治法的典型应用。对于一个需要排序的数组A[0..n-1],先把它一分为二:A[0..[n/2]-1]和A[[n/2]..n-1],对子数组递归排序,然后把这两个排好序的子数组合并为一个有序数组。优点:最坏情况下时间复杂度为:nlogn -n+1缺点:需要线性的额外空间。【时间复杂度】平均复杂度nlogn【代码】#include #includ

2014-04-24 22:35:18 729

原创 查找以指定字符开始和结尾的子串数量

【算法设计与分析基础3.2-9】在一段给定的文本中查找以A开始,以B结尾的子串的数量(例如,在CABAAXBYA中有4个这样的子串)。【算法】以字符‘B’结尾的子串的个数等于字符‘B'左侧字符串中‘A’的数量。如:C A B A A X B Y A       1            2以第一个‘B’为结尾的子串个数为左侧’A‘的个数,故只有一个子串:AB。C A

2014-04-24 20:18:21 3883

原创 int型转字符串型函数itoa()实现

#include #include void Myitoa(int n, char *s){ int i, j; int sign; int tmp; if((sign = n) < 0) n = -n; j = 0; while((i = n % 10)> 0) { s[j++] = i + '0';//将整型转换成字符 n = n / 10; } if(s

2014-04-22 21:48:00 1132

原创 Linux系统目录结构

【Linux系统目录结构】登录系统后,在当前命令窗口下输入 ls / 你会看到以下是对这些目录的解释:/bin bin是Binary的缩写。这个目录存放着最经常使用的命令。/boot这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访

2014-04-21 22:03:50 707

原创 详解Linux 系统启动过程

【Linux 系统启动过程】Linux的启动其实和windows的启动过程很类似,不过windows我们是无法看到启动信息的,而Linux启动时我们会看到许多启动信息,例如某个服务是否启动等。Linux系统的启动过程大体上可分为五部分:内核的引导;运行init;系统初始化;建立终端 ;用户登录系统。A 内核引导当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设

2014-04-21 21:43:19 778

原创 软件设计模式

软件设计模式大致可以分为三类,共23种。创建型模式:单例模式,抽象工厂模式,建造者模式,工厂模式,原型模式。结构型模式:适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式。行为型模式:模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,责任链模式,访问者模式。常用的有:装饰模式,代理模式,适配器模式,观察者模式

2014-04-19 00:49:19 816

原创 算法中重要的问题类型

计算中能遇到无数种问题,dan1.排序

2014-04-16 22:20:12 1307

原创 堆和堆排序

堆是一种灵巧的、部分有序的数据结构,它尤其适合用来实现优先队列。优先队列是元素的一个集合,其中每个元素都包含一个被称为元素优先级的可排序属性。优先队列支持下面的操作:找出一个具有最高优先级的元素(即最大元素);删除一个具有最高优先级的元素;添加一个元素到集合中。通过采用堆这种数据结构可以高效实现这些操作。下文分两部分:第一部分介绍堆;第二部分讲解堆排序。【第一部分:

2014-04-16 16:11:35 2167

原创 编程之美2014

#include #include void Gegequshu(int **matrix, int m, int n, int *sum, int t){ int i, j, k; int a[100], b[100]; int min; int min_sign; for(i = 0; i < m; i++) a[i] = 0; for(i = 0; i < n; i+

2014-04-12 17:00:03 1448

原创 金山网络笔试题-逆时针输出矩阵

【题意】一个n*m的矩阵,按逆时针旋转输出。输入:1  10  92  11  83  12  74  5    6 输出:1  2  3  4  5  6  7  8  9  10  11  12【思路】1  10  92  11  83  12  74  5    6 将矩阵分层,总共可以形成 min(m / 2, n / 2)层。每

2014-04-10 22:47:06 1752

转载 C语言内存分配

【搬运工】在C语言中,根据数据在内存中存在的时间(生存期)不同,将内存空间分为三个区:1.程序区:用于存储程序的代码,即程序的二进制代码;2.静态存储区:用于存储全局变量和静态变量,这些变量的空间在程序编译时就已经分配好了;3.动态存储区:用于在程序执行时分配的内存,又分为:堆区(heap)和堆栈区(stack)两种。                 堆

2014-04-09 14:34:25 719

原创 union赋值及小端系统

【中兴面试题】

2014-04-04 22:55:57 869

RISC_CPUVHDL实现

用VHDL实现了8位的RISC CPU设计,代码非常完整。适合初学者

2012-12-11

空空如也

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

TA关注的人

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