常見算法(基本查找、二分查找、分塊查找冒泡、選擇、插入、快速排序和遞歸算法)

一、常見算法-01-基本、二分、插值和斐波那契查找

1、基本查找/順序查找

需求1:定義一個方法利用基本查找,查詢某個元素是否存在

數據如下:{131,127,147,81,103,23,7,79}

需求2:定義一個方法利用基本查找,查詢某個元素在數組中的索引

要求:不需要考慮數組中元素是否重復

需求3:定義一個方法利用基本查找,查詢某個元素在數組中的索引

要求:需要考慮數組中元素是否重復

數據如下:{131,127,147,81,103,23,7,79,81}

2、二分查找/折半查找

  • 前提條件:數組中的數據必須是有序的
  • 核心邏輯:每次排除一般的查找范圍

練習?

需求:定義一個方法利用二分查找,查詢某個元素在數組中的索引

數據如下:?{7,23,79,81,103,127,131,147}

?

總結:

3、插值查找(二分查找改進)

?

4、斐波那契查找(二分查找改進)

5、總結:

?

二、常見算法-02-分塊,分塊查找,哈希查找

1、分塊查找?

??練習?

分塊查找核心思想:塊內無序,塊間有序實現步驟:1.創建數組blockArr存放每一個塊對象的信息2.先查找blockArr確定要查找的數據屬于哪一塊3.再單獨遍歷這一塊數據即可

2、擴展的分塊查找(無規律的數據)?

3、擴展的分塊查找(查找的過程中還需要添加數據)?

三、常見算法-03-冒泡排序和選擇排序

1、冒泡排序

冒泡排序:相鄰兩個數據兩兩比較,小的放前面,大的放后面。

?

2、選擇排序

選擇排序:從0索引開始,拿著每一個索引商的元素跟后面的元素一次比較,小的放前面,大的放后面,一次類推。?

?

?

四、常見算法-04-插入排序和遞歸算法

1、插入排序

0索引的元素到N索引的元素看做是有序的,把N+1索引的元素到最后一個當成是無序的。
遍歷無序的數據,將遍歷到的元素插入有序序列中適當的位置,如遇到相同數據,插在后面。
N的范圍:0~最大索引

?

2、遞歸算法?

遞歸值得是方法中調用方法本身的現象。

遞歸算法的作用

  • 把一個復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。

  • 遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算

書寫遞歸的兩個核心:

  • 找出口:什么時候不再調用方法。

  • 找規則:如何把大問題變成規模較小的問題

遞歸的注意點:遞歸一定要有出口,否則就會出現內存溢出

練習——遞歸求和

需求:求1~100之間的和?

練習——遞歸求階乘

?需求:用遞歸求5的階乘,并把結果在控制臺輸出

5!= 5*4*3*2*1? ? ? ? ? ? ? ? 100!= 100*99*98*97*96....*2*1;

五、常見算法-05-快速排序

練習——快速排序

第一輪:以e索引的數字為基準數,確定基準數在數組中正確的位置。
比基準數小的全部在左邊,比基準數大的全部在右邊。
后面以此類推。

//結果:1,2,3,4,5,6,7,8,9,10

?總結

六、Arrays?

?

1、Lambda表達式的標準格式

Lambda表達式是JDK8開始后的一中新語法形式。

? ? ? ? ?( ) ->{? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? }

  • ()對應著方法的形參
  • ->? 固定格式
  • {}? 對應著方法的方法體

函數式編程

函數式編程(Functional programming)是一種思想特點。
函數式編程思想,忽略面向對象的復雜語法,強調做什么,而不是誰去做。
而我們要學習的Lambda表達式就是函數式思想的體現。

2、總結:

1、Lambda表達式的基本作用?
? ? ? ? ? ? ? ? ? ? ?簡化函數式接口的匿名內部類的寫法。
2、Lambda表達式有什么使用前提?
? ? ? ? ? ? ? ? ? ? ?必須是接口的匿名內部類,接口中只能有一個抽象方法
3、Lambda的好處?
? ? ? ? ? ? ? ? ? ? ? Lambda是一個匿名函數
? ? ? ? ? ? ? ? ? ? ? 我們可以把Lambda表達式理解為是一段
? ? ? ? ? ? ? ? ? ? ? 可以傳遞的代碼,它可以寫出更簡潔、更靈活的代碼,作為一種更緊
? ? ? ? ? ? ? ? ? ? ? 湊的代碼風格,使Java語言表達能力得到了提升。?

3、Lambda表達式的省略寫法

省略核心:可推導,可省略

  • 參數類型可以省略不寫。
  • 如果只有一個參數參數類型可以省略,同時()也可以省略。
  • 如果Lambda表達式的方法體只有一行大括號,分號,return可以省略不寫,需要同時省略。?

?七、五道算法題

練習1——Lambda表達式簡化Comparator接口的匿名形式

定義數組并存儲一些字符串,利用Arrays中的sort方法進行排序
要求:? ? ?按照字符串的長度進行排序,短的在前面,長的在后面。
? ? ? ? ? ? ? ? ? ? (暫時不比較字符串里面的內容)

?練習2——按照要求進行排序

定義數組并存儲一些女朋友對象,利用Arrays中的sort方法進行排序
要求1:屬性有姓名、年齡、身高。
要求2:按照年齡的大小進行排序,年齡一樣,按照身高排序,身高一樣按照姓名的字母進行排序。
(姓名中不要有中文或特殊字符,會涉及到后面的知識)

創建Text類

或者用

??練習3——不死神兔

有一個很有名的數學邏輯題叫做不死神兔問題,有一對兔子,從出生后第三個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問第十二個月的兔子對數為多少??

規律:從第三個數據開始,是前兩個數據和? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(斐波那契數列)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?練習4——猴子吃桃子

有一堆桃子,猴子第一天吃了其中的一半,并多吃了一個!以后每天猴子都吃當前剩下來的一半,然后再多吃一個,第10天的時候(還沒吃),發現只剩下一個桃子了,請問,最初總共多少個桃子?

練習5——爬樓梯

可愛的小明特別喜歡爬樓梯,他有的時候一次爬一個臺階,有的時候一次爬兩個臺階。
如果這個樓梯有20個臺階,小明一共有多少種爬法呢?

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

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

相關文章

Leetcode 3170. Lexicographically Minimum String After Removing Stars

Leetcode 3170. Lexicographically Minimum String After Removing Stars 1. 解題思路2. 代碼實現 題目鏈接:3170. Lexicographically Minimum String After Removing Stars 1. 解題思路 這一題的話只需要維護一個有序數列(這里我們用堆排來處理&…

C++ C (1152) : 循環賽日程表

文章目錄 一、題目描述二、參考代碼 一、題目描述 二、參考代碼 #include<iostream> #include<vector> #include<cstdlib> using namespace std;void generateSchedule(vector< vector<int> >& table, int numPlayers, int rounds) {// 生…

堆排序-java

這次主要講了堆排序和堆的基本構造&#xff0c;下一期會詳細講述堆的各種基本操作。 文章目錄 前言 一、堆排序 1.題目描述 2.堆 二、算法思路 1.堆的存儲 2. 結點下移down 3.結點上移up 4.堆的基本操作 5.堆的初始化 三、代碼如下 1.代碼如下&#xff1a; 2.讀入數據&#xff…

Harmony os Next——關系型數據庫relationalStore.RdbStore的使用

Harmony os Next——關系型數據庫relationalStore.RdbStore的使用 描述數據庫的使用建表定義表信息創建數據庫表 創建數據庫操作對象增更新查詢刪數據庫的初始化 描述 本文通過存儲一個簡單的用戶信息到數據庫中為例&#xff0c;進行闡述relationalStore.RdbStore數據庫的CRUD…

小公司的軟件開發IT工具箱

目錄 工具鏈困境 難題的解決 達到的效果 資源要求低 工具箱一覽 1、代碼管理工具 2、自動化發版&#xff08;測試&#xff09;工具 3、依賴庫&#xff08;制品包&#xff09;管理 4、鏡像管理 5、授權管理&#xff08;可選&#xff09; 待討論&#xff1a;為什么不是…

LeetCode17電話號碼的字母組合

題目描述 給定一個僅包含數字 2-9 的字符串&#xff0c;返回所有它能表示的字母組合。答案可以按 任意順序 返回。 給出數字到字母的映射如下&#xff08;與電話按鍵相同&#xff09;。注意 1 不對應任何字母。 解析 廣度優先遍歷或者深度優先遍歷兩種方式&#xff0c;廣度優先…

springboot動態切換數據源

1、創建一個springboot項目&#xff0c;導入依賴&#xff08;3.3.0&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version></depe…

滲透測試靶機----FirstLeads_1.3

滲透測試靶機----FirstLeads_1.3 啟動靶機&#xff0c;掃描ip&#xff0c;平平無奇 可以看出&#xff0c;這里是存在139這個主機的&#xff0c;這就是掃描出來的靶機ip繼續探測端口及其他信息 發現這里只開啟了80 端口 嘗試一些基本目錄&#xff0c;發現存在robot.txt文件目錄…

集成算法:Bagging模型、AdaBoost模型和Stacking模型

概述 目的&#xff1a;讓機器學習效果更好&#xff0c;單個不行&#xff0c;集成多個 集成算法 Bagging&#xff1a;訓練多個分類器取平均 f ( x ) 1 / M ∑ m 1 M f m ( x ) f(x)1/M\sum^M_{m1}{f_m(x)} f(x)1/M∑m1M?fm?(x) Boosting&#xff1a;從弱學習器開始加強&am…

插入排序以及希爾排序; 先學會插入,希爾會更簡單喔

1.前言 首先肯定是要學會插入排序再學習希爾排序會更簡單&#xff0c;因為代碼部分有很多相似之處&#xff1b;如果你覺得你很強&#xff0c;可以直接看希爾排序的講解。哈哈哈&#xff01;&#xff0c;每天進步一點點&#xff0c;和昨天的自己比 2.插入排序 讓我們先來看看…

鴻蒙Ability Kit(程序框架服務)【UIAbility組件與UI的數據同步】

UIAbility組件與UI的數據同步 基于當前的應用模型&#xff0c;可以通過以下幾種方式來實現UIAbility組件與UI之間的數據同步。 [使用EventHub進行數據通信]&#xff1a;在基類Context中提供了EventHub對象&#xff0c;可以通過發布訂閱方式來實現事件的傳遞。在事件傳遞前&am…

Rustdesk 自建服務器教程

一、環境 阿里云輕量服務器、debian11 系統 二、服務端搭建 2.1、開放防火墻指定端口 TCP(21115, 21116, 21117, 21118, 21119)UDP(21116) 2.2、安裝 rustdesk 服務器文件 在 github 下載頁https://github.com/rustdesk/rustdesk-server/releases/&#xff0c;下載 rustde…

【自撰寫,國際象棋入門】第1課、棋盤和棋子

第1課 棋盤和棋子 一、國際象棋的棋盤 國際象棋的棋盤為一8乘8的黑、白格相間的棋盤&#xff0c;8條豎線的編號分別為A-H&#xff0c;8條橫線的編號分別為1-8&#xff0c;在記譜時用豎線編號橫線編號的方式表示棋盤上的格子&#xff0c;例如a1格、h8格等.棋盤上有幾條重要的大…

c++程序員為什么要做自己的底層庫

五一期間&#xff0c;在家里翻到之前上學時候用的電腦和工作日志&#xff0c;粗略瀏覽一番&#xff0c;感慨10年歲月蹉跎&#xff0c;仍然沒有找到自己技術方向的“道”。遂有感而發&#xff0c;寫下此文。 算起來&#xff0c;接觸軟件開發也有10年時間了&#xff0c;最開始是…

Java——異常

1.什么是異常 將程序執行過程中發生的不正常行為稱為異常。 常見的異常有&#xff1a;算數異常&#xff0c;空指針異常&#xff0c;數組越界異常 每一種異常都有對應的類對齊描述 為了對每一種異常進行管理&#xff0c;Java內部實現了一個對異常的體系結構 1. Throwable&#x…

CS2游戲30萬掛箱賬號被封,飾品市場要變天

Steam游戲平臺上CS2的玩家在線人數常年位于第一位&#xff0c;即便偶爾會被爆款游戲擠下來&#xff0c;但一切都是暫時的。飾品交易作為CS2的重要組成部分&#xff0c;早已成為了維系游戲熱度的不二法門。可相對應的&#xff0c;各種掛箱子的工作室及個人也孕育而生。 但近來V社…

mysql多啟動

binary安裝&#xff1a; 1、redhat rpm 2、mysql rpm 3、mysql glibc source安裝&#xff1a; 1、5.1mysql(./configure && make && make install) 2、5.5mysql(cmake && make && make install) 單啟動&#xff1a; 1、安裝 tar xf xxx.tar…

【Docker學習】docker pull詳細說明

docker pull是我們經常用到的一個命令。我們使用一些官方鏡像&#xff0c;如MySql、Nginx等都需要用docker pull下載。不過不用的話&#xff0c;也可以。比如使用docker run&#xff0c;要是找不到鏡像&#xff0c;會自動下載。 命令&#xff1a; docker image pull 描述&am…

Uniapp寫一個簡單的商品瀑布流界面+商品詳情

最終效果&#xff1a; 整體內容比較簡單&#xff0c;參考了一篇瀑布流文章和一篇商品詳情文章隨便修改整了下&#xff0c;主要是給想做這方便面的新人一個簡單邏輯的展示&#xff08;其實我也是第一次寫這個emmm&#xff09; 一.組件下載&#xff1a; uni-icon uni-goods-nav…

什么是ACP?

前言 ACP指的是應用程序控制平面&#xff0c;是微服務架構中的一個關鍵組成部分。它負責管理微服務架構中的各個微服務&#xff0c;包括服務發現和注冊、負載均衡、服務路由、熔斷和降級、配置管理等方面的功能。 A&#xff1a;可用性 所有請求都有響應。C&#xff1a;強一致…