合并算法
public class QuickTest {
//递归分成小部分
public void merge_sort(int[] arrays,int start,int end){
//在索引0~9的数组中通过递归分成一下部分
//①第一次数组分割为两部分 0~4 5~9
//②第二次数组,两两分为四部分 0~2 3~4 5~7 8~9
//③第三次数组,两两分为四部分 0~1 2~2 3~4 5~6 7~7 8~9
if(start<end){
//先对0~1 5~6 进行小组排序,排序结果0~1、5~6小组中全为排序完成后的。
//第一次排序完成后再针对0~2(0~1已排序完毕,此小组再与2进行排序) 3~4 5~7(5~6已排序完毕,此小组与7进行排序) 8~9进行排序,
//第二次大排序后再针对0~4(0~2与3~4小组内已排序完成,两个小组间再进行排序) 5~9(5~7与8~9小组内已排序完成,两个小组间再进行排序)进行排序即可
int m=(start+end)/2;
merge_sort(arrays,start,m);
merge_sort(arrays,m+1,end);
//细分到小组后针对小组进行移位赋值操作
Merge2(arrays,start,m,end);
}
}
//打印数组
public void snp(int[] arrays){
for(int i=0;i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
QuickTest m=new QuickTest();
int a[]={2, 7, 8, 3, 1, 6, 9, 0, 5, 4};
m.snp(a);
m.merge_sort(a,0,a.length-1);
}
/**
* 针对分组后的小组进行移位赋值操作
* 在一次操作过程中,只变动当前所传的索引对应的小组内的移位排序,并不会影响除小组外的其他元素的位置,
* 当lo为5 mid为7 hi为9的时候,就说明只操作索引为5~9的元素,索引为0~4的元素位置并不会发生变化
* @param array
* @param lo
* @param mid
* @param hi
*/
private void Merge2(int[] array, int lo, int mid, int hi){
//lo 前组开始下标 mid 后组开始下标 hi 后组结束下标
//当前排序的内部组长度
int length = hi-lo+1;
//前组开始下标
int i=lo;
//后组参与比较的开始下标
int j=mid+1;
System.out.println("分组中部索引:"+mid);
//创建临时数组
int[] tempArrays = new int[length];
int k=0;
while(i<=mid && j<=hi){
//先将较小的数放在临时数组中 此过程必须保证开始下标不会大于结束下标
if(array[i]<array[j]){
tempArrays[k++]=array[i++];
}else{
tempArrays[k++]=array[j++];
}
}
//将右边的剩余的元素放在临时数组中
while(j<=hi){
tempArrays[k++]=array[j++];
}
//将左边的剩余的元素放在临时数组中
while(i<=mid){
tempArrays[k++]=array[i++];
}
for(int key = 0;key <length;key++){
array[key+lo]=tempArrays[key];
}
snp(array);
}
}
相关推荐
综上所述,"hebing.rar_visual c"中的源代码可能涉及到了C++的排序算法实现,特别是合并排序,同时可能还涵盖了多线程、文件操作和错误处理等概念。通过阅读和学习这段代码,开发者可以提升自己的C++编程技能,尤其...
2. **Hebing.java**:这是一个Java源代码文件,很可能是实现了合并排序算法的程序。通过阅读和理解这段代码,你可以看到合并排序在实际编程中的应用,包括如何将序列分解,如何进行递归调用,以及如何合并两个已排序...
在这个“hebing.rar_线性表”压缩包中,我们主要关注的是如何使用C语言来合并两个已排序的线性表。 首先,我们需要了解C语言的基本语法和数据结构。C语言是一种底层编程语言,它的特点是直接、高效,但同时也需要...
"hebing.zip_多文件"这个标题暗示了我们面临的是一个关于如何有效地管理和合并多个文件的场景。在这种情况下,文件被压缩成一个zip文件,便于传输、存储和管理。下面将详细介绍多文件合并的方法以及与之相关的技术...
`heBing`方法负责文件合并操作。当需要将多个小文件重新组合成原始的大文件时,此方法会被调用。它会遍历所有的小文件,将它们的数据顺序读取并写入一个新的大文件中,从而恢复原始文件的内容。 ### 用户界面与交互...
python3 通过关键字合并excel表格,具体参加我的博客说明https://blog.csdn.net/chl183/article/details/110009716
标题 "hebing.rar_Excel VBA" 暗示了这个压缩包包含的是关于使用Excel的VBA(Visual Basic for Applications)编程来实现自动化任务,特别是针对多个Excel工作簿的合并功能。VBA是Microsoft Office应用程序中内置的...
本示例“hebing.rar”文件包提供了一个关于如何合并Excel数据的实例,适用于那些需要处理大量分散在不同工作簿中的数据的用户。下面我们将详细探讨Excel表格处理中的数据合并方法以及可能涉及的相关技术。 首先,...
《Visual FoxPro 数据表有条件交换数据的实现》 在信息技术领域,数据库管理是核心部分之一,而Visual FoxPro(VFP)作为一款经典的数据库开发工具,因其强大的数据处理能力和便捷的编程环境,曾广泛应用于中小型...
matlab空间计量的教程以及一些实用数据,以及本人的一些数据
本文将详细探讨标题“Hebing.zip_数组操作_文件操作”所涉及的两个主要概念:数组操作和文件操作。 首先,让我们关注数组操作。数组是计算机科学中的一种基本数据结构,用于存储同一类型的数据集合。在C++中,数组...
在IT行业中,文件管理和处理是日常工作的重要组成部分。本主题聚焦于“文件合并”这一关键知识点,特别是通过VC++编程语言来实现这一功能。VC++,全称Visual C++,是微软开发的一款强大的C++集成开发环境,它支持...
"Java利用移位运算将int型分解成四个byte型的方法" 以下是 Java 中利用移位运算将 int 型分解成四个 byte 型的方法相关知识点: 知识点 1:移位运算 在 Java 中,移位运算是指将一个数字移动到特定的位数,以便...
在这个“hebing.rar”压缩包中,虽然只有一个名为“2.txt”的文件,但我们可以推断这个文本文件可能是提供了图片拼接的代码示例或者步骤说明。由于文件内容无法直接查看,我们只能基于一般实践来讲解图片拼接和合并...
导航条的制作+鼠标点击事件等一些javascript的运用
《.bin文件合并工具——binHEBING.rar详解》 在数字时代,各种类型的文件格式应运而生,其中.bin文件是一种常见的二进制文件,通常用于存储软件的原始数据,如光盘映像、固件更新或者游戏数据等。...
该函数先调用`hebing`和`pailie`函数对链表进行简化和排序,然后打印出多项式的系数和指数。 #### 实现两个多项式链表的加法 ```cpp poly* addpoly(poly* pa, poly* pb) { // 实现两个多项式的加法 } ``` 此函数...
- **Java**:使用Java Advanced Imaging (JAI) 库,或者Apache Commons Imaging库。 - **JavaScript**:可以使用HTML5的Canvas API,或者库如Fabric.js、Konva.js。 - **C++**:OpenCV库提供了强大的图像处理功能...