lua的table排序問題

2021-09-05 17:57:33 字數 2329 閱讀 2847

1樓:匿名使用者

table.sort的功能是把

排序成也就是把

排序成但是你的b確是

這樣 [3]=nil, [4]=nil

當sort遇到[3]=nil就認為陣列結束了, 就出錯了,你必須給 [3]=0, [4]=0才行,

即是這樣, 排序後資料就變了,

你這裡不是對一個數排序, 是對一對數排序,修改如下:

a=b={}

for i=1,#a do

b[a[i]] = (b[a[i]] or 0)+1end--把統計結果做成陣列

c = {}

n = 0

for k,v in pairs(b) don = n + 1

c[n] =

endcmp = function(x,y)if x==nil then return true end;

if y==nil then return false end;

return ((x[2] < y[2]) or ((x[2] == y[2]) and (x[1] < y[1])) )

endtable.sort(c, cmp)for i=1, #c do

print(c[i][1]..":"..c[i][2].."\n");end

c++排序問題 10

2樓:在晴天的雨傘

(1)「冒泡法」

冒泡法大家都較熟悉。其原理為從a[0]開始,依次將其和後面的元素比較,若a[0]>a[i],則交換它們,一直比較到a[n]。同理對a[1],a[2],...

a[n-1]處理,即完成排序。下面列出其**:

void bubble(int *a,int n) /*定義兩個引數:陣列首地址與陣列大小*/ }

冒泡法原理簡單,但其缺點是交換次數多,效率低。

下面介紹一種源自冒泡法但更有效率的方法「選擇法」。

(2)「選擇法」

選擇法迴圈過程與冒泡法一致,它還定義了記號k=i,然後依次把a[k]同後面元素比較,若a[k]>a[j],則使k=j.最後看看k=i是否還成立,不成立則交換a[k],a[i],這樣就比冒泡法省下許多無用的交換,提高了效率。

void choise(int *a,int n) }

} 選擇法比冒泡法效率更高,但說到高效率,非「快速法」莫屬,現在就讓我們來了解它。

(3)「快速法」

快速法定義了三個引數,(陣列首地址*a,要排序陣列起始元素下標i,要排序陣列結束元素下標j). 它首先選一個陣列元素(一般為a[(i+j)/2],即中間元素)作為參照,把比它小的元素放到它的左邊,比它大的放在右邊。然後運用遞迴,在將它左,右兩個子陣列排序,最後完成整個陣列的排序。

下面分析其**:

void quick(int *a,int i,int j)

}while(m<=n);

if(mi) quick(a,i,n);

} (4)「插入法」

插入法是一種比較直觀的排序方法。它首先把陣列頭兩個元素排好序,再依次把後面的元素插入適當的位置。把陣列元素插完也就完成了排序。

void insert(int *a,int n)

void choise(int *a,int n)

void quick(int *a,int i,int j)

void insert(int *a,int n)

void shell(int *a,int n)

/*為了列印方便,我們寫一個print吧。*/[code]

void print(int *a,int n)

main()

; int a2=;

int a3=;

int a4=;

int a5=;

printf("the original list:");

print(a1,10);

printf("according to bubble:");

bubble(a1,10);

print(a1,10);

printf("according to choise:");

choise(a2,10);

print(a2,10);

printf("according to quick:");

quick(a3,0,9);

print(a3,10);

printf("according to insert:");

insert(a4,10);

print(a4,10);

printf("according to shell:");

shell(a5,10);

print(a5,10);}

lua判斷table中是否有某欄位

local checkstr 112233 for key,value in pairs table doif string.find key,checkstr then 如果table中的 某一bai 個dukey值有包含 112233 字元 zhi串,dao則匹專配屬 endif key che...

lua語言就業問題,lua指令碼語言,現在使用的怎麼樣 前景怎麼樣 公司要用

作為一名應屆大學生你不應該根據語言去找工作 而應該根據工作去定語言lua的話 在微控制器行業有內一定應用容 在遊戲行業應用比較多 我以前就是在遊戲公司用lua語言做伺服器和客戶端指令碼的指令碼程式設計師工資很有限 而且你不知道公司的下一款遊戲會不會用lua所以比較推薦學習c 這類語言 這樣的語言即使...

sql排序問題,一個sql排序問題

沒有加條件的 select 欄位1,欄位2,欄位3,欄位4,from table order by 需要排序的欄位 asc 加條件的 select 欄位1,欄位2,欄位3,欄位4,from table where 條件 order by 需要排序的欄位 asc 另外,一般來說預設的就是升序,如果你是...