PHP陣列元素的順序與逆序排序

2021-07-11 21:35:34 字數 4375 閱讀 4262

對乙個陣列的元素排序是很常見的程式設計任務,比如順序、逆序,還有排序是否保持元素的鍵值對問題,下面開始研究下這些問題。

sort()函式

sort()函式對陣列進行排序,各元素按值由低到高的順序排列。其形式如下:

1

void sort (arrayarray[,int sort_flags])

sort()函式不返回排序後的陣列。相反,它只是「就地」對陣列排序,不論結果如何都不返回任何值。sort_flags引數可選,將根據這個引數指定的值修改該函式的預設行為。

下面來看乙個例子。假設希望由低到高對考試成績進行排序:

1

$grades=array(42,57,98,100,13,43,78,12);

2

sort($grades);

3

print_r($grades);

值得注意到一點是,使用這個函式後,陣列元素的鍵/值關聯不再保持。看看下面的例子:

1

$fruits=array(=>"red","banana"=>"yellow","pear"=>"orange");

2

sort($fruits);

3

4

echo'

';

5

print_r($fruits);

6

echo'

';

程式執行結果:

1

array

2

(

3

[0] => orange

4

[1] => red

5

[2] => yellow

6

)

保持鍵/值對的排序函式asort()

assort()函式與sort()函式相同,以公升序對陣列排序,只不過它將保持鍵/值得關聯。其形式如下:

1

void asort(arrayarray[,integer sort_flags])

還是使用上面的例子:

1

$fruits=array(=>"red","banana"=>"yellow","pear"=>"orange");

2

asort($fruits);

3

print_r($fruits);

程式執行輸出:

1

array

2

(

3

[pear] => orange

4

5

[banana] => yellow

6

)

如果使用可選的sort_flags引數,具體的排序行為將由這個值確定,可以參考sort()排序的部分。

逆序排序函式rsort()

rsort()函式與sort()函式相同,只不過它以相反的順序(降序)對陣列進行元素排序。其形式如下:

1

void rsort(arrayarray[,integer sort_flags])

1

$fruits=array(42,57,98,100,13,43,78,12);

2

rsort($fruits);

3

print_r($fruits);

同樣,這個函式也不能保持陣列的鍵值對關係。

保持鍵/值對的逆序排序函式arsort()

與asort()一樣,arsort()會保持鍵/值得關聯。但是,它以降序對陣列進行排序,其形式如下:

1

void arsort(arrayarray[,integer sort_flags])

例項程式如下:

1

$fruits=array(=>"red","banana"=>"yellow","pear"=>"orange");

2

arsort($fruits);

3

print_r($fruits);

程式執行結果為:

1

array

2

(

3

[banana] => yellow

4

5

[pear] => orange

6

)

以上是常用的排序函式,當然還有其它排序函式,後面會繼續介紹。

陣列元素的逆序數

求乙個n個元素的逆序數 例如 的逆序數為 0 2 0 1 0 3 最直接的求解逆序數方法時間複雜度為o n 2 如果用分治的策略可以將時間複雜度降為o n logn 求n個元素的逆序數的分治思想如下 首先求前n 2個元素的逆序數,再求後n 2個 元素的逆序數,最後在排序過程中合併前後兩部分之間的逆序...

PHP查詢與搜尋陣列元素

查詢 篩選與搜尋陣列元素是陣列操作的一些常見功能。下面來介紹一下幾個相關的函式。in array 函式 in array 函式在乙個陣列彙總搜尋乙個特定值,如果找到這個值返回true,否則返回false。其形式如下 boolean in array mixed needle,array haysta...

PHP查詢與搜尋陣列元素

查詢 篩選與搜尋陣列元素是陣列操作的一些常見功能。下面來介紹一下幾個相關的函式。in array 函式 in array 函式在乙個陣列彙總搜尋乙個特定值,如果找到這個值返回true,否則返回false。其形式如下 boolean in array mixed needle,array haysta...