搜尋
首頁Javajava教程常用的對數組進行的操作

常用的對數組進行的操作

Jun 21, 2017 pm 04:40 PM
java基礎常用操作陣列

常用的對陣列進行的運算

1、求數組中最大值,最小值

##想法:假設下標為0的元素是最大值,遍歷數組,依序跟max比較,如果有元素比這個max還大,則把這個值賦給max。最小值同樣

 1 public class TestArray{ 2     public static void main(String[] args){ 3         int[] arr={23,45,234,576,34,87,34,12,67}; 4         int max=arr[0]; 5         int min=arr[0]; 6         for(int i=0;i<arr.length>max){ 8                 max=arr[i]; 9             }10             if(arr[i]<min><div class="cnblogs_code"></div> <p></p>
<p>#2、尋找陣列中是否存在某個元素<span style="font-size: 18px"></span></p>
<pre class="brush:php;toolbar:false"> 1 import java.util.Scanner; 2 public class TestArray{ 3     public static void main(String[] args){ 4         Scanner in=new Scanner(System.in); 5         int[] arr={23,45,234,576,34,87,34,12,67}; 6         System.out.println("请输入你要查找的元素"); 7         int element=in.nextInt(); 8         int i,flag=0; 9         for(i=0;i<arr.length><div class="cnblogs_code"></div>(2)、用二分查找法找出陣列中是否存在某個元素<p></p>    前提:待尋找的陣列必須是有順序的(大小順序)<p></p>    原理:將要尋找的元素與陣列中中間下標的元素進行比較,如果大於中間元素,去右邊查找,小於中間元素,到左邊查找。 <p></p>
<pre class="brush:php;toolbar:false"> 1 public static int binarySearch(int[] arr,int ele){ 2         int left=0; 3         int right=arr.length-1; 4         int mid; 5         int index=-1; 6         while(leftele){14                 right=mid-1;15             }16         }17         return index;18     }
 

3、對陣列進行排序

(1)、冒泡排序

原理:相鄰元素比較,小的往前趕,大的往後冒,最大值出現的最大索引處

分析:第一次比較,大的往後冒,會把最大值排在最大索引處

   第二次進行比較,因為最大值已經確定了,只需要比較前n-1個元素即可,確定一個第二大值排在第二大索引處

   依序確定第三大值,第四大值...... ....

結論:N個數字來排隊,兩兩比較小前,外層循環n-1,內層循環n-1-i

 

 1 public class TestArray{ 2     public static void main(String[] args){ 3         int[] arr={10,3,8,1,6}; 4         //外层循环控制比较轮数 5         for(int i=0;i<arr.length-1>arr[j+1]){ 9                     int temp=arr[j];10                     arr[j]=arr[j+1];11                     arr[j+1]=temp;12                 }13             }14         }15         //遍历数组16         for(int i=0;i<arr.length><div class="cnblogs_code"></div> <p></p> <p></p>(2)、選擇排序<p></p>原則:從下標0處開始,依序和後邊的元素進行比較,如果後面元素小於下標0的元素,則換位。拿新的下標為0的元素和後邊的做比較。第一次完畢,最小值出現在索引0處<p></p>例:{10,3,8,1,6}<p></p>第一輪比較,從0下標元素開始,依次和後邊的元素進行比較,先是10和3進行比較,101,換位<p></p>{1,10,8,3,6},然後拿1和6比較,1第二輪比較,上一輪已經確定了下標0的元素為最小值,這輪比較從下標1開始,先是10和8比較,換位{1,8,10,3,6};8和3比較,換位{1,3,10,8,6},3和6比較,不換位。第二輪結束,確定倒數第二小的元素在下標1位置。 <p></p>........<p></p>共比較length-1回合。 <p></p>
<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/d57fdc79d0faf5b0bfb4b877402ce99b-1.jpg?x-oss-process=image/resize,p_40" class="lazy" alt=""></p>
<pre class="brush:php;toolbar:false"> 1 public class TestArray{ 2     public static void main(String[] args){ 3         int[] arr={10,3,8,1,6}; 4         for(int i=0;i<arr.length-1>arr[j]){ 7                     int temp=arr[i]; 8                     arr[i]=arr[j]; 9                     arr[j]=temp;10                 }11             }12         }13         //遍历数组14         for(int i=0;i<arr.length><div class="cnblogs_code"></div># <p></p>
<p>#4、刪除陣列中元素<span style="font-size: 18px"></span></p>
<p>( 1)根據下標刪除元素(空位補0)<span style="font-size: 16px"></span></p>
<pre class="brush:php;toolbar:false">1 public static void delete(int[] arr,int index){2         for(int i=index;i<arr.length-1><div class="cnblogs_code"></div># <p></p>
<p>(2)根據輸入的元素刪除陣列中對應的元素<span style="font-size: 16px"></span></p>
<pre class="brush:php;toolbar:false"> 1 public static void delete(int[] arr,int ele){ 2         int index=-1; 3         for(int i=0;i<arr.length><div class="cnblogs_code">#<p> </p>
<p> </p>
<p><span style="font-size: 18px">下面介绍一些API里面常见的对数组的操作</span></p>
<p><span style="font-size: 18px">在java中,除java.lang包下的类和接口可以直接使用外,其他包下的类或接口在使用时需要先导包。</span><br><span style="font-size: 18px">	java.util.Arrays类:此类包含用来操作数组(比如排序和搜索)的各种方法。</span></p>
<p><span style="font-size: 18px">这些都是静态方法,可以类名.方法名直接使用,这里都以int型数组为例</span></p>
<p><span style="font-size: 18px">1、对数组进行快速排序</span></p>
<p><span style="font-size: 18px">Arrays.sort(int[] arr);对传入的数组默认进行升序排序</span></p>
<p><span style="font-size: 18px">2、返回指定数组内容的字符串表现形式。</span></p>
<p><span style="font-size: 18px">Arrays.toString(int[] arr);</span></p>
<p><span style="font-size: 18px">3、使用二分法搜索制定数组中的某个元素的下标</span></p>
<p><span style="font-size: 18px">Arrays.binarySearch(int[] arr);</span></p>
<p><span style="font-size: 18px">4、将将指定的 int 值分配给指定 int 型数组的每个元素。</span></p>
<p><span style="font-size: 18px">Arrays.fill(int[] arr,int val);</span></p>
<p><span style="font-size: 18px">5、复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。</span></p>
<p><span style="font-size: 18px">Arrays.copyOf(int[] arr,int newLength);它的返回值是一个数组</span></p>
<p><span style="font-size: 18px">6、将指定数组的指定范围复制到一个新数组。 包含起始位置但不包含结束位置。</span></p>
<p><span style="font-size: 18px">Arrays.copyOfRange(int[] arr,int from,int to);它的返回值是一个数组</span></p>
<p> </p>
<p><span style="font-size: 14pt">其他数组知识:</span></p>
<p><span style="font-size: 14pt">1、</span><span style="font-size: 18px">命令行参数:可以在执行java命令时为main方法传入参数值。</span></p>
<p style="text-align: left"><span style="font-size: 18px">用法:运行java命令时传入命令行参数: java 类名 "值1" "值2"...</span></p>
<p style="text-align: left"><span style="font-size: 18px">public static void main(String[] args){},我们可以看到main方法是一个有参的方法,参数是一个字符串数组,在命令行为main方法传值时,传入的值都保存在args字符数组里。</span><br><span style="font-size: 18px">		注意:多个参数值之间用空格分割。参数的值将会保存到字符串数组传入main方法,下标从零开始。</span><br><span style="font-size: 18px">		在获取命令行参数时需要注意下标不能越界,最大下标应该为参数的个数-1</span></p>
<div class="cnblogs_code"><pre class="brush:php;toolbar:false">public static void main(String[] args){2         for(int i=0;i<args.length></args.length>

 

 

2、可变参数

可变参数是java1.5之后的新特性,可以代表零到多个相同数据类型的变量,是为了解决因参数个数的变化而导致过多的方法重载问题。

注意:1、可变参数只能用于形式参数(方法定义时),可以把可变参数当作数组来处理。

   2、一个方法在最多只能有一个可变参数,可变参数必须作为最后一个参数。

   3、调用带可变参数的方法时,数据类型必须与可变参数的类型对应。

 1 public class Test1 { 2     public static void main(String[] args){ 3         double sum=add(4,2.1,3.4,1.2); 4         System.out.println(sum); 5     } 6     public static double add(int a,double...b){ 7         double sum=a; 8         for(int i=0;i<b.length></b.length>

 

 

例题:

  1. 合并数组操作:现有如下一个数组:   int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}   要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}  

  思路: 确定出不为0的个数,这样可以开辟新数组;从旧的数组之中,取出内容,并将其赋给新开辟的数组。

 

 1 public class Test1 { 2     public static void main(String[] args){ 3         int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; 4         int[] arr=mergeArrays(oldArr); 5         System.out.println(Arrays.toString(arr)); 6     } 7     public static int[] mergeArrays(int[] oldArr){ 8         int count=0; 9         for(int i=0;i<oldarr.length></oldarr.length>

 

 

 

 

  2、使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现

 

 1 public class Test1 { 2     public static void main(String[] args){ 3         int[] arr={1,2,3,4,5,6,7,8}; 4         int index=binarySearch(arr,6,0,arr.length-1); 5         System.out.println(index); 6     } 7     public static int binarySearch(int[] arr,int ele,int left,int right){ 8         int mid=(left+right)/2; 9         if(arr[mid]==ele){10             return mid;11         }else if(arr[mid]<ele>ele){14             return binarySearch(arr,ele,left,mid-1);15         }16         return -1;17     }18 }</ele>

 

 

 

 

以上是常用的對數組進行的操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),