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