首页 > 其他分享 >快排&归排&二分

快排&归排&二分

时间:2023-02-24 19:56:57浏览次数:41  
标签:二分 sort 归排 merge int mid 快排 while quick

快速排序

void quick_sort(int q[], int l, int r)
{
    if (l >= r) return;

    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j)
    {
        do i ++ ; while (q[i] < x);
        do j -- ; while (q[j] > x);
        if (i < j) swap(q[i], q[j]);
    }

    quick_sort(q, l, j);
    quick_sort(q, j + 1, r);
}

归并排序

void merge_sort (int a[],int l,int r){
    if (l>=r) return ;
    int mid=l+r>>1;
    
    merge_sort(a,l,mid);
    merge_sort(a,mid+1,r);
    
    int k=0,i=l,j=mid+1;
    
    while(i<=mid && j<=r){
        if (a[i]<=a[j]) tmp[k++]=a[i++];
        else tmp[k++]=a[j++];
    }
    
    while(i<=mid)tmp[k++]=a[i++];
    while(j<=r) tmp[k++]=a[j++];
    
    for (int i=l,j=0;i<=r;i++,j++) a[i]=tmp[j];
}

二分

r=mid

while(l<r){
    int mid=l+r>>1;
    if (q[mid]>=x) r=mid;
    else l=mid+1;
}

l=mid

while(l<r){
    int mid=l+r+1>>1;
    if (q[mid]<=x) l=mid;
    else r=mid-1;
}

 

标签:二分,sort,归排,merge,int,mid,快排,while,quick
From: https://www.cnblogs.com/Map1eaf/p/17152933.html

相关文章

  • 一、基础算法(快排,归并,二分,高精度,前缀和,差分)
    一、基础算法快速排序题目:给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。数据范围:1≤n≤100000,所有......
  • 【算法】二分查找算法 (非递归)
    概念: 二分查找算法只适合从一个有序序列(如果一个列表不是有序序列,我们可以先把它排序成有序序列)中进行查找某个值,比如有序的数字序列或者字母序列.  注意:二分查......
  • 二分查找
    1.前提:有已排序数组A(假设已经做好)2.定义左边界L、右边界R,确定搜索范围,循环执行二分查找(3、4两步)2.3.获取中间索引M=Floor((L+R)/2)4.中间索引的值A[M]与待搜索......
  • 【YBT2023寒假Day12 A】我的世界(二分)(主席树)
    我的世界题目链接:YBT2023寒假Day12A题目大意有n个数,每一秒每个数都会减小1,而且你可以选一个数让它减小x,小于0的数会变成0。给你s秒,问你s秒操作后所有数中......
  • 二分查找法学习心得(如何具体问题具体分析)
    题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法......
  • 第一个错误的版本(二分查找法)
    题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本......
  • C语言排序 冒泡 选择 快排
    冒泡排序冒泡排序是一种简单的排序算法,其基本思想是重复地交换相邻两个元素,将较大的元素向右“冒泡”,较小的元素向左“沉淀”,从而将序列中的最大元素逐渐移到最后面。#in......
  • 带标号二分图计数
    本文中\(f[i]\)表示\([x^i]f(x)\)带标号的二分图的数量不方便用一个式子直接写出,我们考虑用别的统计去推出它。我们先求出连通二分图的生成函数,再求任意二分图的生成......
  • 二分法查找数字位置
    二分法举例请实现无重复数字的升序数组的二分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在......
  • 体验AI乐趣:基于AI Gallery的二分类猫狗图片分类小数据集自动学习
    摘要:直接使用AIGallery里面现有的数据集进行自动学习训练,很简单和方便,节约时间,不用自己去训练了,AIGallery里面有很多类似的有趣数据集,也非常好玩,大家一起试试吧。本文......