java練習4.快速查找

題目: 數組 arr[6,1,3,7,9,8,5,4,2],用快速排序進行升序排序.

import java.util.Random;public class recursionDemo {public static void main(String[] args) {/*快速排序:* 第一輪:以0索引為基準數,確定基準數在數組正確的位置,* 比基準數小的放到左邊,比基準數大的放在右邊,* 以此類推*/int [] arr={6,1,3,7,9,8,5,4,2};/*調用方法:* 參數:排序數組,起始索引,結束索引*/quickSort(arr,0,arr.length-1);//輸出打印for (int k = 0; k < arr.length; k++) {System.out.print(arr[k]+" ");}}public static void quickSort(int [] arr,int i,int j){//start,end確定查找范圍int start=i;int end =j;//作用是結束掉遞歸if(start>end){return;}//基準數賦值int baseNumber=arr[i];//利用循環找到需要交換的數字while(start!=end){//利用end,從結束索引開始往前找,找比基準數小的while(true){if (start>=end||arr[end]<baseNumber){break;}end--;}while(true){//利用start,從結束索引開始往前找,找比基準數大的if (start>=end||arr[start]>baseNumber){break;}start++;}//把start,與end的元素進行交換int temp=arr[start];arr[start]=arr[end];arr[end]=temp;}//當start與end同時指向同一個數時,循環結束//結束完成后,需要把基準數和star與end同時指向的位置進行交換int temp=arr[i];arr[i]=arr[start];arr[start]=temp;/*此時,i為0,end為基準數位置* 再把基準數左邊和右邊分別進行相同的計算* 確定左邊起始位為數組起始索引0,結束位為end-1* 確定右邊起始位為start+1,結束位為數組結束索引*/quickSort(arr,i,end-1);quickSort(arr,start+1,j);}}

1.把第一個數當做基準數,運用2個指針start與end 一個從前往后,一個從后往前.

2.當start遇到比基準數大的數時,當end遇到比基準數小的數時,就交換位置.

(提醒:一定要先寫end指針,不能先寫start指針,不然會結果錯誤)

3.最后在用基準數與end,start同時指向的元素換位置

4.后面利用遞歸把基準數2邊,重新看成2個新數組進行相同操作

結果:

?記錄自己學習過程中的一些喜歡的程序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41550.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Scada和lloT有什么區別?

人們經常混淆SCADA&#xff08;監督控制和數據采集&#xff09;和IIoT&#xff08;工業物聯網&#xff09;。雖然SCADA系統已經存在多年&#xff0c;但IIoT是一種相對較新的技術&#xff0c;由于其能夠收集和分析來自各種設備的大量數據而越來越受歡迎。SCADA和IIoT都用于提高工…

leetcode原題:檢查子樹

題目&#xff1a; 檢查子樹。你有兩棵非常大的二叉樹&#xff1a;T1&#xff0c;有幾萬個節點&#xff1b;T2&#xff0c;有幾萬個節點。設計一個算法&#xff0c;判斷 T2 是否為 T1 的子樹。 如果 T1 有這么一個節點 n&#xff0c;其子樹與 T2 一模一樣&#xff0c;則 T2 為…

【學習筆記之vue】These dependencies were not found:

These dependencies were not found:方案一 全部安裝一遍 我們先淺試一個axios >> npm install axios 安裝完報錯就沒有axios了&#xff0c;驗證咱們的想法沒有問題&#xff0c;實行&#xff01; ok

Redis可以用作消息隊列嗎?如何實現簡單的消息隊列功能?

是的&#xff0c;Redis可以被用作簡單的消息隊列。下面是一種實現簡單消息隊列功能的方式&#xff1a; 生產者&#xff08;Producer&#xff09;端&#xff1a; 使用LPUSH命令將消息推送到一個列表中&#xff0c;作為消息隊列的實現。例如&#xff0c;使用LPUSH命令將消息推送到…

算法練習Day50|● 123.買賣股票的最佳時機III ● 188.買賣股票的最佳時機IV

LeetCode:123.買賣股票的最佳時機III 123. 買賣股票的最佳時機 III - 力扣&#xff08;LeetCode&#xff09; 1.思路 將兩次買入賣出轉化為是否持有的狀態&#xff0c;當天可進行兩次買賣&#xff0c;故每天買賣有四種狀態&#xff0c;四種狀態包含了當天不買不賣的狀態。 …

性能分析之MySQL慢查詢日志分析(慢查詢日志)

一、背景 MySQL的慢查詢日志是MySQL提供的一種日志記錄,他用來記錄在MySQL中響應的時間超過閾值的語句,具體指運行時間超過long_query_time(默認是10秒)值的SQL,會被記錄到慢查詢日志中。 慢查詢日志一般用于性能分析時開啟,收集慢SQL然后通過explain進行全面分析,一…

使用PDF文件入侵任何操作系統

提示&#xff1a;我們8月28號開學,所以我得快點更新了&#xff0c;不能拖了&#x1f625; 文章目錄 前言一、打開終端總結 前言 PDF文件被廣泛應用于共享信息&#xff0c;電子郵件&#xff0c;網站或文檔或存儲系統的真實鏈接 它可以用于惡意軟件的載體。 不要問我什么意思&am…

在項目中如何解除idea和Git的綁定

在項目中如何解除idea和Git的綁定 1、點擊File--->Settings...(CtrlAltS)--->Version Control--->Directory Mappings--->點擊取消Git的注冊根路徑&#xff1a; 2、回到idea界面就沒有Git了&#xff1a; 3、給這個項目初始化 這樣就可以重新綁定遠程倉庫了&#x…

Mysql查詢

第三章&#xff1a;select 語句 SELECT employees.employee_id,employees.department_id FROM employees WHERE employees.employee_id176; DESC departments;SELECT * FROM departments;第四章&#xff1a;運算符使用 SELECT employees.last_name,employees.salary FROM em…

springboot使用mybatis配置多數據源,同時能使用mybatisplus

概述 配置多數據源有兩種方案。一種是使用dynamic依賴的DS注解的方法&#xff0c;這種是比較簡單方便的方法。另一種是本文介紹的方式&#xff0c;配置不同數據源的SqlSessionFactory 。 第二種方法是我在開發一個老項目時&#xff0c;老項目配置的方法。 application.xml s…

centos 7鏡像(iso)下載圖文教程(超詳細)

聲明&#xff1a;本教程為本人學習筆記&#xff0c;僅供參考 文章目錄 前言一、阿里云鏡像站下載centos 7 二、清華源下載centos 7小結 前言 聲明&#xff1a;本教程為本人學習筆記&#xff0c;僅供參考 本教程將提供兩種方式下載centos 7 系統鏡像 1、阿里巴巴開源鏡像站 2、…

vue入門

Attribute 綁定 v-bind:取值方式 開發前準備 安裝node.js需要高于15.0 創建vue項目 npm init vuelatest安裝 npm install 啟動 npm run dev模板語法 文本插值 {{ 變量 }} <p> {{ mesg }} </p>這種方式公支持單一表達式&#xff0c;也可以是js代碼&#xf…

大數據課程I2——Kafka的架構

文章作者郵箱:yugongshiye@sina.cn 地址:廣東惠州 ▲ 本章節目的 ? 掌握Kafka的架構; ? 掌握Kafka的Topic與Partition; 一、Kafka核心概念及操作 1. producer生產者,可以是一個測試線程,也可以是某種技術框架(比如flume)。 2. producer向kafka生…

SIP網絡音頻模塊SV-2401V網絡對講音頻模塊(支持POE)

功能和特點 音頻工作方式&#xff1a; 音頻解碼&#xff1a;即音頻播放。接收來自網絡的音頻流&#xff0c;經過模塊解碼后通過線路輸出高質量音頻信號。目前支持可以播放以下音頻格式&#xff1a;MP3、WAV (PCM IMA ADPCM)、G.711、G.722等&#xff0c;可以播放最高48k采樣率…

C語言,二級指針,p,*p,**p的使用

二級指針的使用是一個非常不易的問題&#xff0c;主要還是用的少了&#xff0c;如果經常使用到他&#xff0c;就會很明顯的感受到其具體使用方法。 char *a[10]{"as","bc","ssasd","asd"}&#xff1b; char **pa; 則 p,*p,**p的含義…

ROS-PyQt小案例

前言&#xff1a;目前還在學習ROS無人機框架中&#xff0c;&#xff0c;&#xff0c; 更多更新文章詳見我的個人博客主頁【前往】 ROS與PyQt5結合的小demo&#xff0c;用于學習如何設計一個界面&#xff0c;并與ROS中的Service和Topic結合&#xff0c;從而控制多個小烏龜的運動…

當判斷條件更多的時候,使用JS映射,讓代碼更加的優雅。

前端在進行各種判斷的時候&#xff0c;if會用到很多&#xff0c;但是如果判斷的條件過多&#xff0c;還一直用if&#xff0c;代碼會非常臃腫&#xff0c;而且可修改性不強 那么就有人說了&#xff0c;if不行&#xff0c;那我用switch case唄&#xff0c;但是用switch case 也沒…

不懂瞎指揮,就會闖大禍

不懂瞎指揮&#xff0c;就會闖大禍 【安志強趣講《孫子兵法》第12講】 【原文】 故君之所以患于軍者三&#xff1a;不知軍之不可以進而謂之進&#xff0c;不知軍之不可以退而謂之退&#xff0c;是謂縻軍&#xff1b; 【注釋】 患&#xff0c;危害、貽害。 縻&#xff08;m&…

Fine tune簡介

目錄 Intro Related work Example .1 重新訓練 .2 使用新的數據集進行fine tune .3 修改net結構 References 移學習不是一種算法而是一種機器學習思想,應用到深度學習就是微調(Fine-tune)。通過修改預訓練網絡模型結構(如修改樣本類別輸出個數),選擇性載入預訓練網絡…

拒絕擺爛!C語言練習打卡第三天

&#x1f525;博客主頁&#xff1a;小王又困了 &#x1f4da;系列專欄&#xff1a;每日一練 &#x1f31f;人之為學&#xff0c;不日近則日退 ??感謝大家點贊&#x1f44d;收藏?評論?? 目錄 一、選擇題 &#x1f4dd;1.第一題 &#x1f4dd;2.第二題 &#x1f4…