首页 > 其他分享 >归并排序

归并排序

时间:2024-10-04 14:22:21浏览次数:8  
标签:tmp sort 归并 merge ++ mid int 排序

int tmp[];//temp数组存储数据

void merge_sort(int a[],int l,int r) {
if (l >= r) return;//递归到最后只有一个数返回
int mid = (l + r)/2 ;//确定分界点 l~mid mid+1~r;
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);//递归左右两边
int k = 0, i = l, j = mid + 1;//i,j为指针,分别从左右区的左边界开始移动
while (i<=mid&&j<=r)/移动到右边界停止
{
if (a[i] < a[j]) tmp[k++] = a[i++];
else tmp[k++] = a[j++];//每次选取左右区的较小值填入tmp中
}
while (i <= mid)tmp[k++] = a[i++];//填入左区余留元素
while (j <= r)tmp[k++] = a[j++];//填入右区余留元素
for (i = l, j = 0; i <= r; i++, j++) a[i] = tmp[j];
}

//归并排序

ps:a[i++]=b[j++];先做赋值再做i++,b++;

标签:tmp,sort,归并,merge,++,mid,int,排序
From: https://www.cnblogs.com/dianman/p/18446581

相关文章

  • 快速排序
    取数组中任意一个数,用两个指针i,j(i在j左侧)分别从左右边界向中间逼近,当i>=x时,i停止移动,j开始逼近当i>=x并且j<=x时,交换两个指针所指的数的数值,开启下一轮迭代直到i与j分别越过中间数(i在j右侧)开启下一轮快速排序(递归quick_sort分割数组寻找不同的x)最后使得数组排序完毕·注意数......
  • 53_初识搜素引擎_上机动手实战如何定制搜索结果的排序规则
    1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET/_search{"query":{"bool":{"filter":{"term":{"author_id":1}}}}}当然,也可以是constant_scoreGET/_search{"query"......
  • 54_初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题
    如果对一个stringfield进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个stringfield建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT/website{"mappings":{"article":{"properties":{"title":{"type":"t......
  • pbootcms列表页排序切换(时间/浏览量/推荐…)
    为了让PBootCMS列表页支持多种排序方式,并且在点击按钮时能够切换排序方式,可以通过给URL添加参数并在前端标签中进行判断来实现。以下是详细的实现步骤和代码示例。实现步骤添加按钮中的URL参数在列表调用标签中处理排序参数整合代码详细步骤1.添加按钮中的URL参数在按钮......
  • 快速排序算法及多线程试验
    1)快速排序算法算法实现:选定一个起点/终点位置上的数A小于数A的放在A左侧,大于的放在右侧对A左侧和右侧数组递归的执行步骤2//分区函数template<typenameT>intpartition(Tarr[],intlength){ if(length<=1) return1; inti=1; intj=length-1; //se......
  • 《Java 基础篇》三:排序方式
    Author:ACatSmilingSince:2024-10-01在Java中经常会涉及到对象数组等的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable。定制排序:java.util.Comparator。自然排序自然排序:java.lang.Comparable接口强行对实......
  • [Python手撕]部分排序
    classSolution:defsubSort(self,array:List[int])->List[int]:n=len(array)start,end=-1,-1#从前往后找到第一个逆序foriinrange(n-1):ifarray[i]>array[i+1]:start=i+1......
  • C语言:排序(1)
    目录一、排序的概念及应用排序的概念排序的运用 二、常见排序算法插入排序基本思想直接插入排序希尔排序(缩小增量排序)选择排序基本思想堆排序一、排序的概念及应用排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列......
  • python实现归并排序
    归并排序是把数组分为两半,两半再继续细分为小的数组,小数组完成各自排序后,分别合并为几个比较大的数组并完成内部排序,最后合并为一个数组,这时候基本排序是有序的。代码如下data=[6,15,4,2,8,5,11,9,7,13] defmerge_sort(data):  iflen(data)<=1:    return......
  • 3805 谁拿了最多的奖学金 结构体排序
    解决思路 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。 3. 排序:根据奖金总数对学生进行排序,如果奖金总数相同,则按输入顺序排序。 输出结果:输出获得最多奖金的学生的姓名、奖金......