Java归并排序方法怎么使用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Java归并排序方法怎么使用",在日常操作中,相信很多人在Java归并排序方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java归并排序方
千家信息网最后更新 2026年11月02日Java归并排序方法怎么使用
这篇文章主要介绍"Java归并排序方法怎么使用",在日常操作中,相信很多人在Java归并排序方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java归并排序方法怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
题目 用归并排序法对一组数据由小到大进行排序,数据分别为695、458、362、789、12、15、163、23、2、986。
1、程序分析
归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。归并排序的算法我们通常用递归实现,先把待排序区间[s,t]以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。
归并是将两个或多个有序记录序列合并成一个有序序列。归并方法有很多种,一次对两个有序记录进行归并,称为二路归并排序,也有三路归并排序及多路归并排序。本例程采用二路归并排序,基本方法如下:
a、将n个记录看成n个长度为1的有序子表。
b、将两两相邻的有序子表进行归并。
c、重复执行b,直到归并成一个长度为n的有序表。
2、程序实现
/****************************************************************** * Topic : 用归并排序法对一组数据由小到大进行排序,数据分别为 * 695、458、362、789、12、15、163、23、2、986 * File Name : MergeSort * Author : Jack Cui * Created : 4 April 2016 * ****************************************************************/#include/*归并排序函数声明*/void MergeSort(int iSourceArr[],int iTempArr[],int iStartIndex,int iEndIndex);void Merge(int iSourceArr[],int iTempArr[],int iStartIndex,int iMidIndex,int iEndIndex);int main(void){int i,iArr_b[10],iArr_a[10]; printf("请输入10个数:\n");for(i = 0;i < 10;i++) scanf("%d",&iArr_a[i]); MergeSort(iArr_a,iArr_b,0,9); printf("快速排序后的顺序为:\n");for(i = 0;i < 10;i++) printf("%5d",iArr_a[i]); printf("\n");return 0;}/***********************************函数名称:MergeSort*参数说明:iSourceArr[] 原始数组* iTempArr[] 临时数组* iStartIndex 起始位置索引值* iEndIndex 结束位置索引值*说明: 二路归并排序***********************************/void MergeSort(int iSourceArr[],int iTempArr[],int iStartIndex,int iEndIndex){int iMidIndex;if(iStartIndex < iEndIndex) { iMidIndex = (iStartIndex + iEndIndex) / 2;/*递归调用将iSourceArr[iStartIndex]~iSourceArr[iMidIndex]归并成有序的*/MergeSort(iSourceArr,iTempArr,iStartIndex,iMidIndex);/*递归调用将iSourceArr[iMidIndex+1]~iSourceArr[iEndIndex]归并成有序的*/MergeSort(iSourceArr,iTempArr,iMidIndex+1,iEndIndex);/*调用函数将前两部分归并到iSourceArr[iStartIndex]~iSourceArr[iEndIndex]*/Merge(iSourceArr,iTempArr,iStartIndex,iMidIndex,iEndIndex); }}/***********************************函数名称:Merge*参数说明:iSourceArr[] 原始数组* iTempArr[] 临时数组* iStartIndex 起始位置索引值* iMidIndex 中间位置索引值* iEndIndex 结束位置索引值*说明: 归并排序***********************************/void Merge(int iSourceArr[],int iTempArr[],int iStartIndex,int iMidIndex,int iEndIndex){int i = iStartIndex,j = iMidIndex + 1,k = iStartIndex;while((i <= iMidIndex) && (j <= iEndIndex)) //当i和j都在要合并的部分中成立{if(iSourceArr[i] >= iSourceArr[j]) iTempArr[k++] = iSourceArr[j++];elseiTempArr[k++] = iSourceArr[i++]; }while(i <= iMidIndex) //将iStartIndex~iMidIndex内,未比较的数组顺次加到iTempArr数组中iTempArr[k++] = iSourceArr[i++];while(j <= iEndIndex) //将iMidIndex+1~iStartIndex内,未比较的数组顺次加到iTempArr数组中iTempArr[k++] = iSourceArr[j++];for(i = iStartIndex; i <= iEndIndex; i++) iSourceArr[i] = iTempArr[i];}
3、结果显示
到此,关于"Java归并排序方法怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
排序
有序
数组
方法
位置
索引
并成
函数
区间
数据
学习
元素
二路
递归
原始
下标
两个
参数
名称
序列
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
广州淘业互联网络科技
互联网科技网
互联网科技产业
为想互联网科技怎么样
科技和互联网公司
互联网金融公司科技
智网互联网科技
小马过河互联网科技
壕鑫互联网络科技
无线互联网科技
碳银互联网科技有限公司
汉立互联网科技有限公司联系电话
须眉科技是互联网公司吗
互联网科技项目计划书材料类
黑科技闪耀互联网之光
辽宁互联网新科技
呼和浩特新华互联网科技学院
互联网企业科技类企业如何做账
上海互联网科技公司ppt
咖啡豆
互联网科技宣传片
互联网科技公司做什么
滨湖区互联网智能科技产品供应
南平创想时代互联网科技有限公司
武汉健翔互联网络科技有限公司
和信科技工业互联网
电子商务与互联网科技的关系
马化腾互联网科技教学
中国主要互联网科技公司