【已解决】键盘输入数字-使用JAVA语言实现键盘输入的数字再通过快速排序算法输出

文章目录

  • 一、前言
    • 任务描述
    • 相关知识
      • 分治策略:
      • 编程要求
      • 测试说明
  • 二、具体代码实现
  • 总结


一、前言

—快速排序

任务描述

在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入最终位置后,整个数据序列被基准分割成两个子序列,所有小于基准的元素放置在前子序列中,所有大于基准的元素放置在后子序列中,并把基准排在这两个子序列的中间,这个过程称作划分。
  然后对两个子序列分别重复上述过程,直至每个子序列内只有一个记录或空为止。

本关任务:编写一个能使用快速排序的思想进行整数排序的小程序。

相关知识

如何求解?假设a[s] a[s+1] … … … a[t]待排序的元素。

在这里插入图片描述

分治策略:

  1. 分解:将原序列a[s…t]分解成两个子序列a[s…i-1]和a[i+1…t],其中i为划分的基准位置。
  2. 求解子问题:若子序列的长度为0或为1,则它是有序的,直接返回;否则递归地求解各个子问题。
  3. 合并:由于整个序列存放在数组中a中,排序过程是就地进行的,合并步骤不需要执行任何操作。

在这里插入图片描述

编程要求

根据提示,在右侧编辑器补充代码,实现快速排序。

测试说明

编辑器对你编写的代码进行测试:

测试输入:10,2,5,1,7,10,6,9,4,3,8;
预期输出:
排序前:2 5 1 7 10 6 9 4 3 8
排序后:1 2 3 4 5 6 7 8 9 10

测试输入:5,1,151,12,22,100;

预期输出:
排序前:1 151 12 22 100
排序后:1 12 22 100 151

二、具体代码实现

import java.util.Scanner;public class QuickSort {public static void main(String[] args) {//键盘输入流的录入代码Scanner scanner = new Scanner(System.in);// 读取输入,返回值是一个整数型类型。int n = scanner.nextInt();int[] arr = new int[n];// 定义一个名字为arr的数组,数组里边的长度是n,也就是我们输入的数字。for (int i = 0; i < n; i++) {   // 对我们输入的数字大小的数组进行遍历,我们输入几就遍历循环几次。arr[i] = scanner.nextInt(); // 每循环一次就把输入的数字几放到数组的第几个位置,默认位置从1开始}// 显示排序前的数组System.out.print("排序前:");display(arr); // 定义的一个display的方法。// 快速排序quickSort(arr, 0, n - 1);// 显示排序后的数组System.out.print("排序后:");display(arr);scanner.close(); // scanner 键盘录入的操作很站系统资源所以需要调用close方法。}// 输出数组public static void display(int[] arr) {for (int num : arr) {    // 每输入一个就空一个System.out.print(num + " ");}System.out.println(); // 换行}// 划分算法,定义一个划分的方法,参数传需要对那个数组进行操作,最低位,和最高位。public static int partition(int[] arr, int low, int high) {int pivot = arr[low]; // 最低位的数组赋给基准变量pivot// 选择基准int left = low + 1; // 每次最低位加一依次往右移动int right = high; // 默认初始值是最高位在最右边的数rightwhile (left <= right) {  // 一个while循环判断最低位+1的数是否小于等于右边的数// 找到大于基准的左边元素,核心代码,比基准元素大的但是在右边     while (left <= high && arr[left] <= pivot) {left++;}// 找到小于基准的右边元素while (right >= low + 1 && arr[right] >= pivot) {right--;}// 交换if (left < right) {swap(arr, left, right);}}// 将基准元素放到正确的位置swap(arr, low, right);return right;// 返回基准的最终位置}// 交换数组元素,交换位置。public static void swap(int[] arr, int i, int j) {int temp = arr[i]; //定义的一个中间变量用来交换arr[i] = arr[j]; arr[j] = temp;}// 快速排序public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);// 获取基准位置quickSort(arr, low, pivotIndex - 1);// 对左子序列进行排序quickSort(arr, pivotIndex + 1, high);// 对右子序列进行排序}}
}

总结

  1. 选择一个基准值(pivot),通常可以选择数组的第一个元素、最后一个元素或者中间元素。
  2. 对数组进行划分,将小于基准值的元素放在基准值左边,大于基准值的元素放在基准值右边。
  3. 分别对左右两个子数组重复上述步骤,直到子数组的长度为 1 或 0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543586.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++(学习)2024.9.23

目录 运算符重载 1.概念 2.友元函数运算符重载 3.成员函数运算符重载 4.特殊运算符重载 1.赋值运算符重载 2.类型转换运算符重载 5.注意事项 std::string字符串类&#xff1a; 模板与容器 模板 1.函数模板 2.类模板 类内实现 类内声明类外实现 容器 1.标准模板库…

uniapp框架下scroll-view使用注意事项

在开发蓝牙调试app的过程&#xff0c;需要显示接收到的蓝牙硬件信息&#xff0c;主要需求是要求新收到的信息能够显示到显示区域。 如上图所示&#xff0c;第一个框为接受信息显示框&#xff0c;显示框在每次接收到信息化后自动向上滚动&#xff0c;以便显示最近收到的信息。 …

python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)

文章目录 前言1、任务目标2、抓取流程2.1 分析网页2.2 编写代码2.3 思路分析前言 本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。 1、任务目标 目标网…

总结拓展十一:S4 HANA和ECC区别

第一节 S/4 HANA系统简介 SAP系统的产品线 R/1版本——主要财务模块R/3版本——基本实现全模块ECC6.0——2005年推出&#xff08;ECC是2004年推出&#xff09;HANA——数据库产品——属于内存数据库BW on HANA——HANA与数据分析相结合 拓展&#xff1a; 数据库类型&#x…

EEPROM手册阅读笔记

目录 一、特征描述二、功能描述三、总线特性四、设备寻址五、写入操作1.字节写入2.页写入 六、读取操作1.当前地址读取2.随机读取3.顺序读取 一、特征描述 1.Microchip Technology Inc. 24AA04/24LC04B &#xff08;24XX04*&#xff09; 是一款 4 Kbit 电气可擦除 PROM。该器件…

初学者怎么入门大语言模型(LLM)?看完这篇你就懂了!

当前2024年&#xff0c;LLM领域发展日新月异&#xff0c;很多新的实用技术层出不穷&#xff0c;个人认为要跟上LLM的发展&#xff0c;需要掌握以下内容&#xff0c;并需要不断地跟踪学习。 入门LLM前置基础 深度学习基础知识&#xff1a;推荐李宏毅的深度学习课程Python和num…

STM32(三)GPIO输出、LED及蜂鸣器操作

一、GPIO 1.GPIO介绍 2.GPIO结构 stm32寄存器有32位&#xff0c;GPIO是16位&#xff0c;是stm32的低16位。 3.GPIO模式 4.GPIO应用电路 二、LED操作 1.操作GPIO的三个步骤 &#xff08;1&#xff09;使用RCC开启GPIO时钟 &#xff08;2&#xff09;使用GPIO初始函数初始化…

动态规划算法:10.路径问题_地下城游戏_C++

目录 题目链接&#xff1a;174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 一、题目解析 题目&#xff1a;​编辑 解析&#xff1a; 二、算法原理 1、状态表示 2、状态转移方程 状态转移方程推理&#xff1a; 3、初始化 dp表初始化: 特殊位置初始化&#…

【AcWing】基础算法

目录 1、快速排序 1.1 快速排序 1.2 第k个数 2、归并排序 2.1 归并排序 2.2 逆序对的数量 3、二分 3.1 数的范围 3.2 数的三次方根 4、高精度 4.1 高精度加法 4.2 高精度减法 4.3 高精度乘法 4.4 高精度除法 5、前缀和与差分 5.1 前缀和 5.2 子矩阵的和 5.3 …

基于jsp的图书馆管理系统的设计与实现 (含源码+sql+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于jsp的图书馆管理系统8拥有两种角色&#xff0c;分别为管理员和学生&#xff0c;具体功能如下&#xff1a; 管理员&#xff1a;图书管理、用户管理、违规处理、权限管理、个人信息修改…

某恩加密数据爬虫逆向分析

目标网站 aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9pbmRleC5odG1s 一、抓包分析 响应数据加密 二、逆向分析 下断点&#xff0c;刷新页面 一直往下跟栈&#xff0c;发现是在这进行的加密 内部实现逻辑 本地数据获取 本文章仅提供技术分享交流学习&#xff0c;不可对目标服务器造…

OpenAI最新GPT-o1-preview测评

OpenAI最新GPT-o1-preview测评 测试之后感觉这个相对GPT4o&#xff0c;能力上升了一个大的台阶&#xff0c;思考能力极强的最强GPT模型 之前用GPT4o测试过类似的题目&#xff0c;做的效果极差&#xff0c;答案直接就是错&#xff0c;这次GPT-o1-preview居然做对了&#xff0c;逻…

Ethernet 系列(3)-- 物理层测试::IOP Test::Cable diagnostics

车载以太网物理层IOP测试&#xff0c;即互操作性测试&#xff08;Interop- erability Tests&#xff09;&#xff0c;用于验证车载以太网PHY&#xff08;通常也称为收发器&#xff09;的可靠性和检查PHY能否在给定的有限时间内建立稳定的链路;还用于车载以太网PHY的诊断&#x…

窗口函数性能提升50倍,PawSQL索引推荐实战案例

&#x1f31f;引言 在数据驱动的现代世界&#xff0c;SQL查询的速度是应用程序快速响应的关键。尤其是那些涉及窗口函数的复杂查询&#xff0c;若缺乏恰当的索引支持&#xff0c;性能瓶颈可能会成为阻碍。本文将带您看看PawSQL是如何通过智能索引推荐&#xff0c;帮助一个包含…

《深度学习》—— 神经网络中常用的激活函数

文章目录 1. Sigmoid 激活函数2. Softmax 激活函数3. ReLU 激活函数4. Leaky ReLU 激活函数5. ELU 激活函数6. Tanh 激活函数 激活函数&#xff08;Activation Function&#xff09;是在人工神经网络的神经元上运行的函数&#xff0c;负责将神经元的输入映射到输出端。它在神经…

CVE-2024-4956实战

一、访问网页 二、公司信息域名收集 三、抓包读取敏感文件 Burpsuite抓包&#xff0c;修改GET请求即可&#xff08;GET /%2F%2F%2F%2F%2F%2F%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1 &#xff09;

网工想提升,不止华为HCIE这一个证书

作为网络工程师&#xff0c;拥有一张HCIE&#xff08;华为认证互联网专家&#xff09;无疑是职业生涯中的一项重要成就&#xff0c;但网络技术的世界远比一张证书要复杂得多。提升自己的技术水平&#xff0c;不仅要依赖HCIE这一张证书&#xff0c;更可以通过学习其他认证&#…

现在的大模型榜单,真就没一个可信的,真的都是水分

现在的大模型榜单上&#xff0c;真的都是水分。 全是作弊的考生&#xff0c;真的。 上周&#xff0c;AI圈有个很炸裂的大模型发布&#xff0c;在全网引起了山呼海啸&#xff0c;一众从业者和媒体尊称它为开源新王。 就是Reflection 70B。 在每项基准测试上都超过了 GPT-4o&a…

printf 命令:格式化输出

一、命令简介 ​printf​ 命令在 Linux 系统中用于格式化并打印字符串到标准输出。它是 C 语言中 printf ​函数的命令行版本&#xff0c;因此其格式化选项与 C 语言中的非常相似。 相关命令&#xff1a; echo&#xff1a;通常使用 echo&#xff0c;它比较简单。printf&…

FastAPI开发环境搭建——开发第一个web程序

FastAPI开发环境搭建——开发第一个web程序 搭建开发环境 FastAPI官方文档学习 - FastAPI (tiangolo.com) 安装fastapi框架 pip install fastapi[all] pip install uvicorn使用对应IDE创建fastapi项目&#xff0c;例如pycharm,vscode和创建普通的python项目无差别 创建一个…