归并排序(2017-09-05)

归并排序是相当于将一个数组分为有序数组,在进行合并。

也就是将每个数当成一个有序数组,一 一合并在两两合并

知道将数组合并完。这里一个方法用来递归数组,也就是理论上将数组分离

第二个方法是将其进行合并(有序数组的合并)

这种归并如果不熟悉的人很容易报异常,所以多多分析。

 1     public void joinSort(int[] a,int start,int end) {
 2         int mid=(start+end)/2;
 3         if(start<end) {
 4             //递归调用将数组分为前一半
 5             joinSort(a,start,mid);
 6             //将数组分为后一半
 7             joinSort(a,mid+1,end);
 8             //调用合并两个有序数组
 9             merge(a,start,end,mid);
10         }
11     }
12     public void merge(int[] a,int start,int end,int mid ) {
13         int[] temp=new int[a.length];
14         int i=start,j=mid+1,k=start;
15         int tmp=start;
16         while(i<=mid&&j<=end) {
17             if(a[i]<a[j]) {
18                 temp[k++]=a[i++];
19             }else{
20                 temp[k++]=a[j++];
21             }
22         }
23         //如果哪里写的出了点小差错,很容易遭成数组索引越界的异常,所以一定要想好
24         while(k<=end) {
25             if(i<=mid) {
26                 temp[k++]=a[i++];
27             }else {
28                 temp[k++]=a[j++];
29             }
30         }
31          while(tmp<=end){
32                 a[start++]=temp[tmp++];
33             }
34     }
时间: 2024-10-16 21:41:25

归并排序(2017-09-05)的相关文章

老男孩教育每日一题-2017年05月23日-一个100M的分区,写入0.5K的,或写入1M的,可以写多少?

1.题目 老男孩教育每日一题-2017年05月23日-一个100M的磁盘分区,写入0.5K的文件,或写入1M的文件,分别可以写多少个?为什么? 2.参考答案 一个100M的磁盘分区,写入0.5K的文件,或写入1M的文件,分别可以写多少个?为什么?错误解答:很容易计算1K的个数:100*1000=100000个,1M文件的个数:100/1=100个 解答思想:先答几点知识 a.上面的考试题考察的是文件系统inode和block知识.b.inode是存放文件属性信息的(也包含指向文件实体的指针),默

调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器

2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cookie:*支持请求的代理与模拟环境参数设置:*时间戳管理(取网络当前时间戳.转成日期.转成倒计时):*支持拖放文件到本程序窗计算文件的MD5.SHA1.CRC32值:*集成常见编码解码(Ansi与Utf8互转.URL加解密.UniCode转中文);*集成常用符号与其UniCode值:*集成常用数学计算

oracle__学习笔记2014.09.05

oracle学习笔记2014.09.05 测试数据库配置的信息 全局数据库名:xiuhao 系统标识符(SID):xiuhao 服务器参数文件名:c:\oracle\dbs\spfilexiuhao.ora database control URL: http://C-1:5500/em sys以及system解锁 edit 以文本格式打开当前命令/ / 执行当前命令 l [num] 显示缓存区命令 get [file] 把file中的文件加入到缓冲区 c /[str] /[str] 修改当前语

【2017.09.29 星期五 关于c++瞎侃】

c++中最重要的语法特征就是 类 了,通过它,程序员可以自定义自己的数据类型. c++中的类包含 数据成员 也 包含 函数成员. C++语言主要的一个设计目标 就是让程序员自定义的的数据类型向 内置类型一样 好用. 基于此, 标准c++库 实现了丰富的类和函数. 野心很大 [2017.09.29 星期五 关于c++瞎侃]

无垠PE组合工具2017.09.03 维护版网络版

适合大众--无垠PE组合工具,维修维护专用--简洁实用.功能俱全,赢得信赖! 无垠PE及工具都源于无忧启动论坛所得,无OEM或个人信息,不修改主页.不写垃圾文件.无广告.无暗扣.无陷阱!采用Win8PEx64内核.工具网络全内置,支持UEFI启动.可量产.刻盘.U+/B+.无垠PE组合工具修改版由网友"恋梦"更新维护,在原版基础适当精简后,针对里面工具进行升级,精简不常用工具,维护系统完全够用!123 新版变化 2017.09.03 更新- Acronis True Image 201

2017/09/06:算法练习小记

今天做了7622求排列逆序,半个小时,得到了一个时间超时的结果,但是我不太知道怎么改进了. 代码如下: #include <iostream> #include <algorithm> using namespace std; int num[100002]; int status[100002]; long long result = 0; int n; int cal2(int number){ int x=0; for(int i=number;i<n;i++){ if

2017/09/12

中心主题-----框架---framest-- 如果用框架当前页面不能有body cols="300,*" ----左右拆分 左300右剩余 rows="300,*"----上下拆分 frameboder----边框 <frame>-----------src-------框架要显示页面地址 ----------scrolling--------滚动条 iframe--- 可以镶嵌在普通页面 src----------框架要显示页面地址 width---

2015.09.05 C++中类的static与const成员

static 对于特定类类型的全体对象而言,访问一个全局对象有时是必要的.也许,在程序的任意点需要统计已创建的特定类类型对象的数量:或者,全局对象可能是指向类的错误处理例程的一个指针:或者,它是指向类类型对象的内在自由存储区的一个指针.然而,全局对象会破坏封装:对象需要支持特定类抽象的实现.如果对象是全局的,一般的用户代码就可以修改这个值.类可以定义类 静态成员,而不是定义一个可普遍访问的全局对象.通常,非 static 数据成员存在于类类型的每个对象中.不像普通的数据成员,static 数据成

2015.09.05 组成原理笔记

一二.概论 三.系统总线 四.存储器 1. 存储器层次结构: 寄存器 缓存(Cache) 主存 辅存(磁盘,磁带) 2. 静态RAM[坑] 动态RAM[坑] ROM 只读存储器 PROM (一次性)可编程只读存储器 EPROM 可擦除可编程只读存储器 EEPROM 电擦除可编程只读存储器 Flash Memory 闪存 3. Cache地址映射[坑]

2017/09/19

<script> var a = prompt("请输入第一个数字"); var b = prompt("请输入第二个数字"); var ys = prompt("请输入运算符"); a = parseInt(a) b = parseInt(b) switch(ys) {case "+": alert(a+b); break; case "-": alert(a-b); break; case