自用--选择问题(P85)

news/2025/1/15 15:38:01/

寻找T的第k小元素

寻找第n/2小元素--》中值问题

 k=s rs就是第k小元素

k<s rs在左边序列中

k>s rs在右边序列中

#include<iostream>
using namespace std;int Partition(int r[],int low,int high){//对数据进行划分 //无序数组 左边 右边 左小右大int i=low,j=high;while(i<j){//扫描右侧 while(i<j&&r[i]<r[j]) j--; if(i<j){//如果左边比右边的大 就交换 (左小右大)int temp=r[i];r[i]=r[j];r[j]=temp;i++; //移动左边的指针 }//扫描左侧 while(i<j&&r[i]<r[j]) i++;if(i<j){//如果右边比左边的小 就交换 保证左边是小的 右边是大的int temp=r[i];r[i]=r[j];r[j]=temp; j--; //右边的指针向左移动 }}//循环结束i=j时候//返回i的坐标就是中间值 return i;
}int SelectMink(int r[],int k,int low,int high)
{//选择问题的实现 k是待查找的数 int s;//s是要找的轴值 (位置坐标) s= Partition(r,low,high);//如果在中间,就直接返回找到了 !查找成功 if(s==k){return r[s];}//如果k<r[i] 在左边递归查找else if(k<s){return SelectMink(r,k,low,s-1);}//如果k>r[i] 在右边递归查找 else{return SelectMink(r,k,s+1,high);}
}int main(){cout<<"请输入数据总数:"<<endl;int n;cin>>n;int r[n];cout<<"请输入数据:"<<endl;for(int i=0;i<n;i++){cin>>r[i];}int k; //传入的是数据的位置坐标 cout<<"请输入想查找的第k个元素:"<<endl;cin>>k;k=k-1; int low=0,high=n-1;int res=SelectMink(r,k,low,high); //要找的是排行老四位置的数是多少 cout<<res; 
}


http://www.ppmy.cn/news/405935.html

相关文章

C语言进阶--指针(C语言灵魂)

目录 1.字符指针 2.指针数组 3.数组指针 4.数组参数与指针参数 4.1.一维数组传参 4.2.二维数组传参 4.3.一级指针传参 4.4.二级指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 qsort函数 9.指针和数组笔试题 10.指针笔试题 前期要点回…

谷粒商城P85单选和多选无法修改问题

谷粒商城P85单选和多选无法修改问题 问题&#xff1a;数据库表中不存在 value_Type这个字段 接口文档里是需要提供value_Type这个键&#xff08;而且是不能为null&#xff09;解决方法&#xff1a; 1、在数据库表pms_attr添加value_type字段&#xff0c;类型为tinyint&#x…

谷粒商城P85页面不显示

一开始报错如下&#xff1a; Cannot read properties of null (reading forEach)原因是返回的属性分组没有关联属性&#xff0c;即attrs: null&#xff0c;所以遍历失败 评论区说可以在前端检查&#xff0c;我试了一下还是报错如下 "TypeError: Cannot read properties …

P85-前端基础动画效果-动画缩放效果

P85-前端基础动画效果-动画缩放效果 1.概述 这篇文章介绍动画缩放效果 对元素进行缩放的函数&#xff1a; scaleX() 水平方向缩放scaleY() 垂直方向缩放scaleZ() Z方向缩放scale() 双方向的缩放 2.缩放 2.1.缩放代码 <!DOCTYPE html> <html><head><met…

黑马JAVA P85-87 ATM完整版

package com.itheima;import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Random; import java.util.Scanner;public class ATMSystem {public static void main(String[] args) {//1.准备系统需要的容器对象&#xff0c;用于存储账户对象ArrayList<…

win11 P85主板能正常安装吗 windows11使用p85主板的安装的步骤方法

P85主板相信有不少小伙伴的电脑都有在使用&#xff0c;因为Win11系统的升级对主板也是有一定要求的&#xff0c;因此使用P85主板小伙伴就会想知道自己的主板到底符不符合要求&#xff0c;那么今天就来看一看小编整理的资料了解下吧。更多Windows11安装教程&#xff0c;可以参考…

Leetcode P85 Java

Leetcode P85 Java 执行用时&#xff1a;8 ms, 在所有 Java 提交中击败了73.52%的用户 内存消耗&#xff1a;46.4 MB, 在所有 Java 提交中击败了10.50%的用户 通过测试用例&#xff1a;74 / 74 ideas 首先我们获取传入数组的长度&#xff0c;如果数组长度等于0那么就是特殊…

P85

&#xfeff;&#xfeff; /*输入数据时&#xff0c;对输入缓冲区的错误输入进行容错处理*/ #include<stdio.h> #include<stdlib.h> #define N 4 //定义符号常量N int PrintGrade(int x) { if((x<0)||(x>100)) { printf("错误的成绩!\n"…