摘要: #include#include#includevoid Insertion(int arr[],int n){ int i,j,tmp; for(i=1;i0&&tmp=r) return; c=(l+r)/2; MergeSort(arr,l,c); MergeSort(arr,c+1,r); Merge(arr,l,c,r);}void Bubbling(int a[],int n){ int i,j,tmp; for(i=1;i0&&a[j-1]>tmp;--j) a[j]=a[j-1]; a[j]=tmp; }}int partition(int 阅读全文
posted @ 2013-08-16 08:29 SuperTramp 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 原文作者:cuifenghui 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算 阅读全文
posted @ 2013-06-14 08:33 SuperTramp 阅读(126) 评论(0) 推荐(0) 编辑
摘要: Java--String、栈与堆1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2.栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。3.Java中的数据类型有两种。一种是基本类型(primitivetypes),共有8种,即int 阅读全文
posted @ 2013-06-13 10:52 SuperTramp 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 首先说一下声明(declaration)和定义(definition)。声明只是告诉编译器存在一个变量,可能会用到;定义是创建一个变量,为变量分配内存空间。声明可以有多个,而定义只能有一个。1.概念数组用来存放多个相同类型的变量,数组的类型就是它存放元素的类型,如 int arr[10] 表示数组arr存放了10个int型变量;指针是一种特殊的变量,它存放地址,它的类型代表了该指针存放哪种类型变量的地址,如 int *p 表示指针p存放一个int型变量的地址。2.数组与指针的异同 1)当数组名作为函数形参时,数组和指针等价,此时编译器将数组名转化成指向数组第一个元素的指针。此时sizeof(. 阅读全文
posted @ 2013-01-04 14:33 SuperTramp 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 最近在自学操作系统,看到进程与线程一章,小小的总结一下。 一.概念 进程:简单的说,进程是程序的一个运行实例。如果一个程序有多个运行实例,则它们属于不同的进程。每一个进程都在内存中有自己的地址空间,地址空间中存放程序文件,数据以及堆栈。与进程相关的还包括寄存器,进程打开的文件,报警等。 线程:线程是进程中的一个执行过程。线程类似于迷你的进程。线程总是存在于进程中。每个进程至少有一个线程。同一个进程的线程之间共享地址空间,全局变量,打开的文件,报警等。 比较:进程与线程在系统中的层次关系粗略的讲,线程之于进程就像进程之于操作系统。进程与进程之间多表现为一种竞争关系,而线程之间合作的关... 阅读全文
posted @ 2012-12-18 19:49 SuperTramp 阅读(206) 评论(0) 推荐(0) 编辑