首页 > 其他分享 >想想为什么这两段代码,一段可以实现快排,一段实现不了?

想想为什么这两段代码,一段可以实现快排,一段实现不了?

时间:2023-12-09 15:44:49浏览次数:24  
标签:temp 实现 quicksort high 快排 int low key 一段

可实现代码

#include <stdio.h>
void quicksort(int a[],int i,int j);

int main(){
    int num;
    int a[10001]={0};
    scanf("%d\n",&num);
    int i=0;
    
    while(i < num){
        scanf("%d",&a[i]);
        i++;
    }
    quicksort(a,0,num-1);
    i=0;
    while(i < num){
        printf("%d ",a[i]);
        i++;
    }
    return 0;
}

void quicksort(int a[],int i,int j){
    int low=i,high=j;
    int key=a[i];
    int temp;
    if(low >= high){
        return;
    }
    while(low < high){
        while(low<high && a[high]>=key){
            high--;
        }
        if(a[high] < key){
            temp=a[high];
            a[high]=a[low];
            a[low]=temp;
        }
        while(low<high && a[low]<=key){
            low++;
        }
        if(a[low] > key){
            temp=a[low];
            a[low]=a[high];
            a[high]=temp;
        }
    }
    quicksort(a,i,low-1);
    quicksort(a,low+1,j);    
}

不能实现

void quicksort(int a[],int i,int j){
    int key,temp;
    int b=i,c=j;
    if(i >= j){
        printf("eee\n");
        printf("%d %d\n",b,c);
        return;
    }
    printf("%d %d\n",i,j);
    while(i < j){
        key=a[i];
        while(i < j && a[j] >= key){
            j--;
        }
        if(a[j] < key){
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
        while(i < j && a[i] <= key){
            i++;
        }
        if(a[i] > key){
            temp=a[j];
            a[j]=a[i];
            a[i]=temp;
        }
    }
    quicksort(a,b,i);
    quicksort(a,i+1,c);

}

 

标签:temp,实现,quicksort,high,快排,int,low,key,一段
From: https://www.cnblogs.com/Azzero/p/17891055.html

相关文章

  • Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支实现源码分析(二)
    一、前言在本系列文章:SpringSecurity6.x系列(4)——基于过滤器链的源码分析(一)中着重分析了SpringSecurity在SpringBoot自动配置、 DefaultSecurityFilterChain和FilterChainProxy 的构造过程。SpringSecurity6.x系列(7)——SecurityBuilder继承链源码分析中详细分析了......
  • .net实现后台服务就这么简单,只要实现IHostedService接口就行了
     IHostedService 接口在.NETCore中的主要用途是定义应用程序生命周期内运行的后台服务。这些服务可以执行初始化、长时间运行的任务、定期运行的任务等。通过实例,我们可以演示如何使用 IHostedService 来实现一个简单的网络检测服务,并记录日志。首先,我们需要创建一个实现......
  • 常见场景题-Redis的bitmap如何实现签到功能?
    Redis的bitmap实现签到系统?答:主要讲一下Redis原生的bitmap的使用方法,以及如何使用bitmap来实现签到功能先来看一下如何使用redisbitmap的原生命令实现签到功能:签到我们先来设计key:userid:yyyyMM,那么假如usera在2023年10月3日和2023年10月4日签到的话,使用以下命令:se......
  • 动手实现基于 JSON 和 OData 两种数据模型的 Web 应用表格控件行项目的添加和删除
    文章标题描述的需求是笔者在工作和网络上经常收到的前端开发领域的咨询话题之一。Web应用的表格控件,在切换到编辑模式下之后,给用户提供了行项目的添加和删除功能。基于MVC和MVVM框架的前端控件,都离不开Model即数据模型层。笔者工作中使用最多的模型层实现技术,即JSON模型......
  • Angular 应用里异步打开对话框的技术实现
    constdialog=this.launchDialogService.openDialog();dialog.pipe(take(1)).subscribe();这段代码涉及到Angular中处理对话框(Dialog)的逻辑,其中openDialog方法返回一个Observable对象。我们将分两部分来详细解释这段代码。1.openDialog方法首先,我们来讨论openDial......
  • 简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx
    简单封装PhpSpreadsheet,实现PHP快速导入、导出xlsx<?phpnamespacexfstu\tools;usePhpOffice\PhpSpreadsheet\Spreadsheet;usePhpOffice\PhpSpreadsheet\Writer\Xlsx;usePhpOffice\PhpSpreadsheet\IOFactory;/***@methodexport(array$field,array$data)简单封......
  • k8s:通过 kubectl 插件 Kubepug 实现集群升级检查(废弃API资源检查)
    背景:k8s的版本迭代很快,虽然主要版本一直没有变化,但是次要版本一直在迭代,2022年一年就发布了三个次要版本,同时不同的次要版本之间API资源一直在变化,有新加入的,也有废弃删除的。不同版本的api资源版本也有不同,往往不是向下兼容的,比如在低版本中API资源版本为v1beta1,而高版......
  • 基于微信小程序社区老年人健康医疗信息服务平台设计与实现
    作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享收藏点赞不迷路 关注作者有好处文末获得源码 项目编号:BS-XCX-023一,环境介绍语言环境:Java: jdk1.8数据库:M......
  • 毕设选题|基于Springboot和Vue实现游戏攻略分享平台
     作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注......
  • 基于卷积神经网络实现高速公路表面图像裂缝检测程序
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注作......