深入理解基本數據結構:數組詳解

引言

在計算機科學中,數據結構是存儲、組織和管理數據的方式。數組作為最基礎的數據結構之一,廣泛應用于各種編程場景。在這篇博客中,我們將詳細探討數組的定義、特點、操作及其在不同編程語言中的實現。


什么是數組?

數組是一種線性數據結構,用于存儲一組相同類型的元素。數組中的元素在內存中是連續存儲的,可以通過索引快速訪問。

數組的特點

  1. 固定大小:數組的大小在創建時確定,不能動態調整。
  2. 相同類型:數組中的所有元素必須是相同的數據類型。
  3. 連續存儲:數組中的元素在內存中是連續存儲的。
  4. 隨機訪問:可以通過索引快速訪問任意位置的元素。

數組的基本操作

創建數組

Java中創建數組
public class ArrayExample {public static void main(String[] args) {// 創建一個包含5個整數的數組int[] arr = new int[5];// 使用數組初始化器創建并初始化數組int[] arr2 = {1, 2, 3, 4, 5};// 輸出數組元素for (int i = 0; i < arr2.length; i++) {System.out.println("arr2[" + i + "] = " + arr2[i]);}}
}

訪問數組元素

Java中訪問數組元素
public class AccessArray {public static void main(String[] args) {int[] arr = {10, 20, 30, 40, 50};// 訪問并輸出數組的第三個元素System.out.println("第三個元素是: " + arr[2]);// 修改數組的第三個元素arr[2] = 35;System.out.println("修改后的第三個元素是: " + arr[2]);}
}

數組的遍歷

Java中遍歷數組
public class TraverseArray {public static void main(String[] args) {int[] arr = {5, 10, 15, 20, 25};// 使用for循環遍歷數組for (int i = 0; i < arr.length; i++) {System.out.println("元素 " + i + " 的值是: " + arr[i]);}// 使用增強for循環遍歷數組for (int element : arr) {System.out.println("元素的值是: " + element);}}
}

數組的常見操作

  1. 查找:在數組中查找特定元素的位置。
  2. 插入:在數組的指定位置插入新元素。
  3. 刪除:從數組中刪除指定位置的元素。
  4. 排序:對數組中的元素進行排序。
Java中的數組操作示例
import java.util.Arrays;public class ArrayOperations {public static void main(String[] args) {int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};// 查找元素int index = Arrays.binarySearch(arr, 4);System.out.println("元素 4 的位置是: " + index);// 插入元素 (在Java中直接使用數組不能動態插入,只能創建新數組)int[] newArr = new int[arr.length + 1];System.arraycopy(arr, 0, newArr, 0, arr.length);newArr[arr.length] = 7;System.out.println("插入新元素后的數組: " + Arrays.toString(newArr));// 刪除元素 (在Java中直接使用數組不能動態刪除,只能創建新數組)int[] smallerArr = new int[arr.length - 1];System.arraycopy(arr, 0, smallerArr, 0, 3);System.arraycopy(arr, 4, smallerArr, 3, arr.length - 4);System.out.println("刪除元素后的數組: " + Arrays.toString(smallerArr));// 排序數組Arrays.sort(arr);System.out.println("排序后的數組: " + Arrays.toString(arr));}
}

數組在不同編程語言中的實現

Python中的數組

在Python中,數組可以通過列表(List)來實現。Python的列表與數組非常相似,但具有動態調整大小的能力。

# 創建和初始化數組
arr = [1, 2, 3, 4, 5]# 訪問數組元素
print("第三個元素是:", arr[2])# 修改數組元素
arr[2] = 35
print("修改后的第三個元素是:", arr[2])# 遍歷數組
for i in range(len(arr)):print("元素", i, "的值是:", arr[i])# 增強for循環遍歷數組
for element in arr:print("元素的值是:", element)# 插入元素
arr.append(6)
print("插入新元素后的數組:", arr)# 刪除元素
arr.pop(2)
print("刪除元素后的數組:", arr)# 排序數組
arr.sort()
print("排序后的數組:", arr)
JavaScript中的數組

在JavaScript中,數組是動態大小的,可以直接插入和刪除元素。

// 創建和初始化數組
let arr = [1, 2, 3, 4, 5];// 訪問數組元素
console.log("第三個元素是:", arr[2]);// 修改數組元素
arr[2] = 35;
console.log("修改后的第三個元素是:", arr[2]);// 遍歷數組
for (let i = 0; i < arr.length; i++) {console.log("元素", i, "的值是:", arr[i]);
}// 增強for循環遍歷數組
for (let element of arr) {console.log("元素的值是:", element);
}// 插入元素
arr.push(6);
console.log("插入新元素后的數組:", arr);// 刪除元素
arr.splice(2, 1);
console.log("刪除元素后的數組:", arr);// 排序數組
arr.sort((a, b) => a - b);
console.log("排序后的數組:", arr);

圖解:數組的基本操作

創建和初始化數組
創建數組
初始化大小
分配內存
填充默認值
數組創建完成
訪問數組元素
訪問數組元素
通過索引訪問
獲取元素值
返回值
數組遍歷
遍歷數組
使用for循環
訪問每個元素
輸出元素值
插入和刪除操作
插入元素
創建新數組
復制原數組元素
在指定位置插入新元素
新數組完成
刪除元素
創建新數組
復制原數組元素
跳過要刪除的元素
新數組完成

總結

數組作為最基礎的數據結構之一,具有固定大小相同類型連續存儲隨機訪問的特點。通過對數組的基本操作和實現的學習,我們可以更好地理解和使用數組。在實際編程中,數組的應用廣泛且高效,是每個程序員都必須掌握的基礎知識。


參考資料

  1. Java Array Documentation
  2. Python List Documentation
  3. JavaScript Array Documentation

希望這篇博客能幫助你更好地理解數組。如果你喜歡這篇文章,請給我點贊,并點擊關注,以便第一時間獲取更多優質內容!謝謝你的支持!

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

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

相關文章

原生android的內存性能提升方面的方案大致設計

一 測試目標&#xff1a; 以滿足用戶設備的內存性能和不殺后臺為目標。 1&#xff1a;滿足用戶設備的內存性能是指不出現因為內存原因導致的安卓設備死機&#xff0c;卡頓等問題。 2&#xff1a;滿足不殺后臺是指整個設備使用時&#xff0c;不出現后臺app被殺。 通常是估算如果…

構造函數注入@RequiredArgsConstructor

Api(tags "用戶管理接口") RequiredArgsConstructor RestController RequestMapping("users") public class UserController {private final IUserService userService;PostMappingApiOperation("新增用戶")public void saveUser(RequestBody U…

輸入框輸入值之后,檢索表格中是否存在輸入框中的值,存在就讓當前文字為紅色

this.searchValue為輸入框的值 createKeywordHtml_content(data) { if (data undefined) { return data; } if (typeof data ! string) { data String(data) } let value data.replace(this.searchValue, <span style"color:#FF5555">$&</span>…

來一組愛勝品1133DN PRO打印機的照片

剛拆箱的機器正面照片 打開前蓋正準備要安裝原裝耗材 下圖是原裝耗材&#xff0c;硒鼓型號是DR2833、碳粉盒型號是TN2833,鼓組件打印頁數12000頁&#xff0c;TN2833標準容量粉盒打印頁數1600頁/5%覆蓋率&#xff0c;TN2833H大容量粉盒打印頁數3000頁/5%覆蓋率、TN2833L超大容量…

Intel base instruction -- cvttsd2si

將截斷雙精度浮點數并轉換為有符號整數。 4958: 8b 05 82 49 00 00 mov 0x4982(%rip),%eax # 92e0 <age_to_colorBase> // eaxgvar_92e0 495e: 48 8d 15 7b 49 00 00 lea 0x497b(%rip),%rdx # 92e0 <age_to_colorBase&g…

慢性腎臟病-MR+轉錄組文獻

Identification of novel therapeutic targets for chronic kidney disease and kidney function by integrating multi-omics proteome with transcriptome - PMC (nih.gov) 數據和材料 Our pQTL summary data were acquired from previously published studies and can be f…

三. 根文件系統構建

根文件系統構建好以后就意味著我們已經擁有了一個完整的,可以運行的最小系統. 一. 根文件系統簡介 根文件系統一般也叫做 rootfs&#xff0c;那么什么叫根文件系統&#xff1f;Linux 中的根文件系統更像是一個文件夾或者叫做目錄,在這個目錄里面會有很多的子目錄,目錄下的文件…

《妃夢千年》第二十九章:朝中波瀾

第二十九章&#xff1a;朝中波瀾 自從被封為護國夫人后&#xff0c;林清婉在大周的地位愈發穩固&#xff0c;她的智慧和勇氣不僅贏得了皇上的信任&#xff0c;也獲得了朝中眾臣的敬佩。然而&#xff0c;這也引來了部分人的嫉妒和不滿&#xff0c;他們開始在暗中謀劃&#xff0…

AdaBoost集成學習算法理論解讀以及公式為什么這么設計?

本文致力于闡述AdaBoost基本步驟涉及的每一個公式和公式為什么這么設計。 AdaBoost集成學習算法基本上遵從Boosting集成學習思想&#xff0c;通過不斷迭代更新訓練樣本集的樣本權重分布獲得一組性能互補的弱學習器&#xff0c;然后通過加權投票等方式將這些弱學習器集成起來得到…

RightFont 8.7.0 Mac專業字體管理工具

RightFont 適用于 macOS 的終極字體管理器應用程序&#xff0c;提供無縫的字體管理體驗。它結合了速度、直觀的功能和專業的功能&#xff0c;使用戶能夠輕松預覽、安裝、組織和共享字體。 RightFont 8.7.0 Mac下載 RightFont 8.0的新增功能 RightFont 8.0 帶來了全新的智能選…

【電腦應用技巧】如何尋找電腦應用的安裝包華為電腦、平板和手機資源交換

電腦的初學者可能會直接用【百度】搜索電腦應用程序的安裝包&#xff0c;但是這樣找到的電腦應用程序安裝包經常會被加入木馬或者強制捆綁一些不需要的應用裝入電腦。 今天告訴大家一個得到干凈電腦應用程序安裝包的方法&#xff0c;就是用【聯想的應用商店】。聯想電腦我是一點…

比賽獲獎的武林秘籍:05 電子計算機類比賽國獎隊伍技術如何分工和學習內容

比賽獲獎的武林秘籍&#xff1a;05 電子計算機類比賽國獎隊伍技術如何分工和學習內容 摘要 本文主要介紹了在電子計算機類比賽中技術層面上的團隊分工和需要學習的內容&#xff0c;分為了嵌入式硬件、嵌入式軟件、視覺圖像處理、機械、上位機軟件開發和數據分析等六個方向&am…

文心一言 VS 訊飛星火 VS chatgpt (299)-- 算法導論22.1 3題

三、有向圖 G ( V , E ) G(V,E) G(V,E) 的轉置是圖 G T ( V , E T ) G^{T} (V,E^{T}) GT(V,ET)&#xff0c;這里 E T { ( v , u ) ∈ V V E^{T} \{(v,u)∈ V \times V ET{(v,u)∈VV:(u,v)∈ E}$因此&#xff0c;圖 G T G^{T} GT 就是將有向圖 G G G中所有邊的方向反過來…

java LogUtil輸出日志打日志的class文件內具體方法和行號

最近琢磨怎么把日志打的更清晰&#xff0c;方便查找問題&#xff0c;又不需要在每個class內都創建Logger對象&#xff0c;還帶上不同的顏色做區分&#xff0c;簡直不要太爽。利用堆棧的方向順序拿到日志的class問題。看效果&#xff0c;直接上代碼。 1、demo test 2、輸出效果…

【WebGIS平臺】傳統聚落建筑科普數字化建模平臺

基于上述概括出建筑單體的特征部件&#xff0c;本文利用互聯網、三維建模和地理信息等技術設計了基于瀏覽器/服務器&#xff08;B/S&#xff09;的傳統聚落建筑科普數字化平臺。該平臺不僅實現了對傳統聚落建筑風貌從基礎到復雜的數字化再現&#xff0c;允許用戶輕松在線構建從…

Linux 利用命名空間創建一個自己的“容器“

Linux 利用命名空間創建一個自己的"容器" 前置條件 創建一個目錄存放容器mkdir /myapp準備靜態編譯busybox&#xff0c;操作系統自帶的往往是依賴動態庫的(本文使用的debian apt install busybox-static) 開始 使用unshare起一個獨立命名空間.# 進入后/myapp目錄…

Python中生成隨機數:一種簡單而強大的方法

簡介&#xff1a; 在編程中&#xff0c;我們經常需要生成隨機數來模擬各種情況&#xff0c;比如游戲、統計模擬、機器學習數據集的劃分等。Python通過其內置的random模塊提供了一個簡單而強大的方式來生成隨機數。本文將介紹如何使用random模塊來生成各種類型的隨機數&#xff…

【RESTful】前后端的通信方式 REST

前后端的通信方式 REST 1.初識 REST1.1 什么是 REST1.2 REST 的特征 2.HTTP 方法與 CRUD 動作映射3.實現 REST 風格的 CRUD 1.初識 REST 1.1 什么是 REST REST 是軟件架構的規范體系結構&#xff0c;它將 資源的狀態 以適合客戶端的形式從服務器端發送到客戶端&#xff08;或…

小型簡易GIT服務器搭建和使用

搭建GIT服務器的文章有很多&#xff0c;多數在管理的時候都使用了gitosis作為管理工具&#xff0c;但是作為一個小團隊(人數少于50人)&#xff0c;我覺得完全可以使用公鑰驗證的方式&#xff0c;這樣會簡單不少&#xff0c;下面來看看簡易的搭建方法吧。 服務器版本:ubuntu 16…

Unix\Linux 執行shell報錯:“$‘\r‘: 未找到命令” 解決

linux執行腳本sh xxx.sh報錯&#xff1a;$xxx\r: 未找到命令 原因&#xff1a;shell腳本在Windows編寫導致的換行問題&#xff1a; Windows 的換行符號為 CRLF&#xff08;\r\n&#xff09;&#xff0c;而 Unix\Linux 為 LF&#xff08;\n&#xff09;。 縮寫全稱ASCII轉義說…