Java陣列排序的實現

2021-09-14 04:59:12 字數 3438 閱讀 5709

使用arrays類:其中的sort()使用的是「經過調優的快速排序法」

string[

] data =

;system.out.

println

(arrays.

tostring

(data));

// [1, 4, 3, 2]

arrays.

sort

(data)

;system.out.

println

(arrays.

tostring

(data));

// [1, 2, 3, 4]

arrays.sort(t array, comparator<? super t> comparator)

使用自定義比較器,對陣列元素進行排序(序列排序)

string[

] data =

;system.out.

println

(arrays.

tostring

(data));

// [1, 4, 3, 2]

// 實現降序排序,返回-1放左邊,1放右邊,0保持不變

arrays.

sort

(data,

(str1, str2)

->

else})

;system.out.

println

(arrays.

tostring

(data));

// [4, 3, 2, 1]

public

void

testreverseself()

throws exception

; system.out.

println

("\t"

+ arrays.

tostring

(strings));

for(

int start =

0, end = strings.length -

1; start < end; start++

, end--

) system.out.

println

("\t"

+ arrays.

tostring

(strings));

}

public

void

testarraylist()

throws exception

; system.out.

println

("\t"

+ arrays.

tostring

(strings));

list

list =

newarraylist

<

>

(strings.length)

;for

(int i = strings.length -

1; i >=

0; i--

) strings = list.

toarray

(strings)

; system.out.

println

("\t"

+ arrays.

tostring

(strings));

}

public

void

testcollectionsreverse()

throws exception

; system.out.

println

("\t"

+ arrays.

tostring

(strings));

// 這種方式僅針對引用型別,對於基本型別如:

// char cs = ;

// 應該定義或轉換成對應的引用型別:

// character cs = ;

collections.

reverse

(arrays.

aslist

(strings));

system.out.

println

("\t"

+ arrays.

tostring

(strings));

}

@test

public

void

testtimeduration()

throws exception

private

static string[

] strings =

newstring

[1000000];

}/**

* 記錄操作執行總時間.

* * @param the generic type

* @param clazz the clazz

* @param methodname the method name

*/public

void

recordtime

(class

clazz, string methodname)

catch

(exception e)}}

long end = system.

currenttimemillis()

; system.out.

println

("end: "

+ end)

; system.out.

println

("duration: "

+(end - start)

+" ms");

}

使用collections和arrays工具類: 12 ms 

使用arraylist: 7 ms

直接陣列元素對換: 4 ms

當資料量越來越大時,使用arraylist的方式會變得很慢.

直接使用陣列元素對換,總是最快完成.

總結:使用collections和arrays工具類反轉陣列元素更簡單,但是在原陣列上操作時速度更快,並且占用最少的記憶體.

public

static

void

main

(string args)

; random random =

newrandom()

;for

(int i=

0;i)for

(int i:arr

)}

JAVA陣列的排序實現

使用arrays類 其中的sort 使用的是 經過調優的快速排序法 但不能用sort 進行降序排序 public static void main string args arrays.sort a for int i 0 i system.out.print a i 5 1 5 8 輸出結果,注意...

Java實現陣列全排序(遞迴)

import org.junit.test 全排序思路 假設有n個數需要進行全排列,我們可以把每個數都放到第乙個位置,然後剩下的n 1個數進行全排列。即有n n 1 種可能性,與n個數進行全排列的n 次可能性一致 利用遞迴的方式,依此類推當剩下的數個數為1時,為一次排列,輸出該排列。所以遞迴函式可以...

氣泡排序之java陣列實現

氣泡排序的演算法思想 比較相鄰兩個元素的關鍵字值,如果反序,則交換。若按照公升序排序,每一趟將掃瞄資料序列的最大值到最後位置。即最多掃瞄n 1次,每次確定乙個值。下面是乙個陣列的氣泡排序實現 氣泡排序是穩定的 從小到大氣泡排序 氣泡排序時間效率在o n 和o n n 之間 public static...