sort函式,sortrows函式 Matlab

2021-09-30 20:01:44 字數 4423 閱讀 1679

1、sort函式

sort函式用於對矩陣元素按公升序或者降序進行排序,其呼叫語法如下。

(1)b=sort(a):對a進行預設的公升序排序。輸入參量a可以是向量、矩陣或字串,若為向量,則對向量中的所有元素進行排序;若為矩陣,則對列方向各元素進行排序;若為字串,則按其對應的ascii碼的大小進行排序。

(2)b=sort(a,dim):對矩陣a中的第dim維進行公升序排序。

(3)b = sort(...,mode):按照指定公升序或降序進行排序。mode可以是'ascend'(預設,公升序),或者是'descend'(降序)。

(4)[b,ix] = sort(a,...):對a進行排序,並返回排序後各元素的下標值。

【例4-20】  sort函式使用示例。

>>  a = [ 3 7 5;0 4 2 ]

a =3     7     5

0     4     2

>> sort(a,1)                %  列方向排序

ans =

0     4     2

3     7     5

>> sort(a,2)                %  行方向排序

ans =

3     5     7

0     2     4

>> sort(a,2,'descend')      %  行方向降序排序

ans =

7     5     3

4     2     0

>> [b,ix] = sort(a,2)      %  排序並返回下標

b =3     5     7

0     2     4

ix =

1     3     2

1     3     2

>> b=reshape(18:-1:1,3,3,2)  %  建立高維矩陣

b(:,:,1) =

18    15    12

17    14    11

16    13    10

b(:,:,2) =

9     6     3

8     5     2

7     4     1

>> sort(b,1)              %  列方向排序

ans(:,:,1) =

16    13    10

17    14    11

18    15    12

ans(:,:,2) =

7     4     1

8     5     2

9     6     3

>> sort(b,2)             %  行方向排序

ans(:,:,1) =

12    15    18

11    14    17

10    13    16

ans(:,:,2) =

3     6     9

2     5     8

1     4     7

>> sort(b,3)           %  頁方向排序

ans(:,:,1) =

9     6     3

8     5     2

7     4     1

ans(:,:,2) =

18    15    12

17    14    11

16    13    10

2.sortrows函式

sortrows函式用於在保持各行相對元素不變的情況下,對各行整體進行公升序排列。sortrows函式呼叫語法如下。

(1)b = sortrows(a):按行對a進行公升序排列。輸入變數a必須是矩陣或者列向量。

(2)b = sortrows(a,column):基於向量column指定的列對矩陣a進行排序。

(3)[b,index] = sortrows(a,...):在對矩陣a進行排序的同時,返回下標索引。如果a是乙個列向量,則b = a(index);如果a是乙個m×n的矩陣,則b = a(index,:)。

【例4-21】  sortrows函式使用示例。

>> rand('state',0)                    %  設定隨機數種子,以便於讀者驗證

>> a = floor(rand(6,7) * 100);     %  建立測試矩陣,floor函式用於取整,以便於觀察

>> a(1:4,1)=95;  a(5:6,1)=76;  

>> a(2:4,2)=7;  a(3,3)=73       %   修改部分資料,以體現函式用法

a =95    45    92    41    13     1    84

95     7    73    89    20    74    52

95     7    73     5    19    44    20

95     7    40    35    60    93    67

76    61    93    81    27    46    83

76    79    91     0    19    41     1

>> b = sortrows(a)            %  按照第1列元素大小對矩陣a進行排序

b =76    61    93    81    27    46    83

76    79    91     0    19    41     1

95     7    40    35    60    93    67

95     7    73     5    19    44    20

95     7    73    89    20    74    52

95    45    92    41    13     1    84

通過比較可以看到,矩陣a中第1列具有相等的元素。sortrows函式在進行排序操作時,如果指定列中存在相等元素,則通過比較指定列右側列中的元素來進行排序,右側列中若還有相等元素,則按照右側再下一列的元素進行排序。

>> c = sortrows(a,2)          %  按照第2列的大小進行排序

c =95     7    73    89    20    74    52

95     7    73     5    19    44    20

95     7    40    35    60    93    67

95    45    92    41    13     1    84

76    61    93    81    27    46    83

76    79    91     0    19    41     1

>> d = sortrows(a,[1 7])      %  按照第1列和第7列進行排序,首先按照第1列進行排序,如果第1列中存在相等元素,則按照第7列進行排序。

d =76    79    91     0    19    41     1

76    61    93    81    27    46    83

95     7    73     5    19    44    20

95     7    73    89    20    74    52

95     7    40    35    60    93    67

95    45    92    41    13     1    84

>> e = sortrows(a,[1 -7])       %  按照第1列和第7列進行排序,[1 -7]中的負號的含義是按照降序排序。

e =76    61    93    81    27    46    83

76    79    91     0    19    41     1

95    45    92    41    13     1    84

95     7    40    35    60    93    67

95     7    73    89    20    74    52

95     7    73     5    19    44    20

>> f = sortrows(a, -4)  %  按照第4列進行降序排序

f =95     7    73    89    20    74    52

76    61    93    81    27    46    83

95    45    92    41    13     1    84

95     7    40    35    60    93    67

95     7    73     5    19    44    20

76    79    91     0    19    41     1

sort函式用法與stable sort函式

標頭檔案 include algorithm using namespace std 語法 sort start,end,cmp 注意 第三個引數cmp公升序情況下可以不寫,降序情況需要多呼叫乙個函式 例如 對a 10 陣列公升序排列 include include using namespace ...

Python中sort以及sorted函式初探

help on built in function sorted in module builtin sorted sorted iterable,cmp none,key none,reverse false new sorted list help on built in function so...

qsort函式 sort函式

先說明一下qsort和sort,只能對連續記憶體的資料進行排序,像鍊錶這樣的結構是無法排序的。首先說一下,qsort qsort 基本快速排序的方法,每次把陣列分成兩部分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本快速排序的效率較低,且不穩定 整合在c語言庫函式裡面的的qsort函式,使用...