為了後續另一程式的書寫,這次要研究的主題是2D陣列資料的排序。2D陣列和1D陣列的排序有很大的差異,1D陣列可以直接使用LabVIEW的陣列排序元件,而2D陣列不行


在第1行排序完後,其後的資料亦一並換位。還有第1行的資料是有重複的,因此必須把第1行資料有重複的那幾筆資料,由第2行再排序過

20080115-01  

 

程式因為沒有可直接套用的排序元件,因此必須從頭開始自己寫

 


程式的第1步是先將第1行的資料排序


這裡使用迴圈分割法,從來源陣列取出第1行的資料,將取出的資料用Array Max & Min元件每次取出最小值的索引值,再依索引值用Delete From Array元件從來源陣列分割出那一列資料,然後用迴圈的Shift Register結合Build Array元件重組成新的2D陣列,這新的2D陣列為第1行已排序完畢的

 


程式的第二步是將第1行資料有重複的部份排序第二行


這裡分為幾個步驟,還是使用迴圈分割法:


第1步是先判斷第1行資料是否有重複,若沒有則直接進入下一步驟,若有則紀錄共有多少重複資料數目之後再進到下一步驟


第2步分為2個部份:


第1個是第1行沒有重複的情況,這裡直接將上一步驟比較的資料從來源陣列用Delete From Array元件分割出那一列資料,然後用迴圈的Shift Register結合Build Array元件重組成新的2D陣列


第2個是第1行有重複的情況,這裡從上一步驟比較的資料開始從來源陣列分割出和重複資料數目同筆數的資料,分割出的資料一樣再用迴圈分割法排序,排序後的分割資料再加入新的2D陣列中

20080115-02  

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()