首页 > 其他分享 >18.32016年43题代码实战

18.32016年43题代码实战

时间:2023-04-14 18:04:25浏览次数:25  
标签:实战 18.32016 int 43 high while low pivotkey

#include <iostream>

//考研初始只需要完成setPartition即可
int setPartition(int a[],int n)
{
    int pivotkey,low=0,low0 = 0,high=n-1,high0=n-1,flag=1,k=n/2,i;
    int s1=0,s2=0;
    while (flag)//当low等于k-1,也就是n/2-1时分割结束
    {
        pivotkey=a[low];   //选择枢轴
        while (low<high) {
            //基于枢轴对数据进行划分
            while (low < high && a[high] >= pivotkey) {
                --high;
            }
            if (low != high) {
                a[low] = a[high];
            }
            while (low != high && a[low] <= pivotkey)
            {
                ++low;
            }
            if (low!=high)
            {
                a[high]=a[low];
            }
        }//end of while(low<high)
        a[low]=pivotkey;   //把分隔值放到核心位置
        if(low==k-1)
        {
            flag=0;
        } else{
            if (low<k-1)
            {
                low0 =++low; //low0只是做暂存,为下次使用做准备,++low后,low比分隔值大1
                high = high0;  //把上次暂存的high0拿过来
            } else{
                low=low0;      //把上次暂存的low0拿过来
                high0=--high;  //high0只是做暂存,为下次使用准备
            }
        }
    }
    for (i = 0; i < k; i++) {
        s1+=a[i];
    }
    for (i = k; i < n; i++) {
        s2+=a[i];
    }
    return s2-s1;
}
int main() {
    int A[10]={4,1,12,18,7,13,18,16,2,15};
    int difference;
    difference= setPartition(A,10);  //考研只需要完成setPartition即可,无需编写main函数
    printf("%d\n",difference);
    return 0;
}

标签:实战,18.32016,int,43,high,while,low,pivotkey
From: https://www.cnblogs.com/su-1007/p/17319144.html

相关文章

  • 项目实战-经验复盘 项目流程 有用 看1
    一个大型项目从立项到完成会需要多方合作,涉及到很多人员的调动,工作也会比较的繁琐。一套科学有效的(敏捷)项目管理方法是保证项目成功落地的必要条件。项目管理贯穿于产品的全流程管理,大致分为5个里程碑,分别为需求(需求管理、需求评审)、研发(研发前准备、研发中)、测试(功能测试、集成......
  • 17.6归并排序原理及实战
    #include<stdio.h>#include<stdlib.h>#defineN7typedefintElemType;voidMerge(ElemTypeA[],intlow,intmid,inthigh){staticElemTypeB[N];//加static的目的是无论函数执行多少次,都只有一个B[N]inti,j,k;for(i=low;i<=high;i++){......
  • vue3微信公众号商城项目实战系列(3)项目初始文件及文件夹简介
    首先我们来看下项目的文件结构图,如下: 各个文件及文件夹作用如下:文件或文件夹名称作用.vscodeVisualStudioCode开发工具的配置信息存放目录,从这个目录可以看出vue3确实是推荐使用vscode作为开发工具的。node_modules项目中用到的包存放目录,当我们用"npminstall......
  • 17.5堆排序实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<string>typedefintElemType;typedefstruct{ElemType*elem;//存储元素的起始地址intTableLen;//元素个数}SSTable;voidST_Init(SSTable&ST,intlen){S......
  • HDU 4313 Matrix (贪心)
    题目地址:HDU4313利用最小生成树的思想,这里是从大往下删,能删则删,不能删就留着。用个并查集维护下。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set>......
  • 17.3选择排序原理及实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<string>typedefintElemType;typedefstruct{ElemType*elem;//存储元素的起始地址intTableLen;//元素个数}SSTable;voidST_Init(SSTable&ST,intlen){S......
  • BZOJ 2243 [SDOI2011] 染色 (树链剖分)
    题目地址:BZOJ2243普通的树链剖分,用线段树维护区间段数与最左边和最右边的颜色。然后当合并区间的时候判断一下左儿子的右端与右儿子的左端是否相同,若相同,则将和减去1.同样,在迭代求值的过程中,也要记录下上条链的最顶端的颜色。代码如下:#include<iostream>#include<strin......
  • 敏捷测试高效实战-测试架构师成长记的读后感
    序测试工作的最终目标是服务于产品的商业价值;产品质量必须是由测试人员和开发人员共同负责的;测试团队不仅要提升自身的效率,也要提升整个研发团队的交付效率;正如《Google软件测试之道》一书中提到的,测试团队属于工程生产力团队,以产品交付和效率提升为己任;自动化测试平台建立了......
  • vue3微信公众号商城项目实战系列(1)开发环境准备
    项目忙完,这次上新,写一个前端系列,采用vue3来开发一个微信公众号商城。前言:1.微信公众号商城本质也是一个网站,由一个个网页组成,只不过这些网页运行在手机端,能响应手指的点击、长按、拖拽等操作。2.既然是网页,当然可以用3件套(js+html+css)来写,但象vue这样的前端框架比3件套更高效......
  • 16.6快速排序实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<string>typedefintElemType;typedefstruct{ElemType*elem;//存储元素的起始地址intTableLen;//元素个数}SSTable;voidST_Init(SSTable&ST,intlen){S......