更新時間:2020-09-18 17:18:36 來源:動力節(jié)點 瀏覽2204次
關于java編程的基礎知識(比如基本算法、數(shù)據(jù)結(jié)構(gòu)等)在前面已經(jīng)介紹過了,相信大家也都有學習,java數(shù)組也是java零基礎的新手朋友們需要學習的基礎知識,下面我們一起來學習java數(shù)組排序的知識,了解怎么樣用java算法對數(shù)組排序。
要想對數(shù)值型數(shù)組進行排序,可以使用Arrays類中的sort方法:
int[] a= new int[10000];
...
Arrays.sort(a)
這個方法使用了優(yōu)化的快速排序算法。快速排序算法對于大多數(shù)數(shù)據(jù)集合來說都是效率比較高的,Arrays類還提供了幾個使用起來很便捷的方法。
下面例子中的程序?qū)a(chǎn)生一個抽獎游戲中的隨機數(shù)值組合。
假如抽獎是“從49個數(shù)值中抽取6個”,那么,程序可能的輸出結(jié)果為:
要想選擇這樣一個隨機的數(shù)值集合,就要首先將數(shù)值1, 2, ...,n存入數(shù)組numbers中:
int[] numbers= new int[n];
for(inti =0;i
numbers[i] = i + 1;
而用第二個數(shù)組存放抽取出來的數(shù)值:int[]result=new int[k];
現(xiàn)在,就可以開始抽取k個數(shù)值了。Math.rando方法將返回一個0-1之間(含0、不含1)的隨機浮點數(shù)。用n 乘以這個浮點數(shù),就可以得到從0-n-1之間的一個隨機數(shù)。
int r =(int)(Math.random()*n;
下面將result的第i個元素設置為numbers[r]存放的數(shù)值,最初就是r本身。但正如所看到的那樣,
numbers數(shù)組的內(nèi)容在每一次抽取之后都會發(fā)生變化。
result[i] = numbers[r];因為所有抽獎的數(shù)值不能一樣,所以必須確保不會再次抽取到那個數(shù)值。因此,這里使用數(shù)組中的最后一個數(shù)值改寫number[r],并將n減1 。
numbers[r]= numbers[n - 1];
n--;
關鍵在于每次抽取的都是下標,而不是實際的值。下標指向(point into)包含尚未抽取過的數(shù)組元素。
在抽取了k個數(shù)值之后,就可以對result數(shù)組進行排序了,這樣使得輸出效果更加清晰:
Arrays.sort(result);
for(int r:result)
System.out.println(r);
• static void sort(type[] a)
使用優(yōu)化的快速排序算怯對數(shù)組進行排序。
參數(shù):a 一個類型為int、long、short 、char、byte、float或double的數(shù)組
• static int binarySearch(type[] a, type v)
使用二分搜索算法查找值。如果找到,返回相應的下標:否則,返回一個負值r;-r-1為保持有序v應插入的位置。
參數(shù):a 一個類型為int、long、short、char、byte、float或double的有序數(shù)組
v 與a中元素類型相同的一個值
• static void fill(type[] a, type v)
將數(shù)組的所有元素設置為v。
參數(shù):a 一個類型為int long、short、char、boolean、float或double 的數(shù)組
v 與a中元素類型相同的一個值
• static boolean equals(type[ ]a,type[] b}
如果兩個數(shù)組的長度相同,并且下標相同的元素都對應相等,則返回true
參數(shù): a, b 類型為int long short char、byte、boolean、float、double的數(shù)組
以上就是對java數(shù)組排序內(nèi)容的介紹,并用實例具體說明應該用什么樣方法來對java數(shù)組排序,相信有了例子大家會更清楚具體的操作,希望大家在平時空余的時間多多學習java視頻教程中關于java數(shù)組排序的內(nèi)容,并加以練習做到完全掌握數(shù)組的知識和操作。