龍海兒
關注《電氣外傳》公眾號,知乎,CSDN等同號
級別: 論壇先鋒
![]() |
圖片:
![]()
圖片:
![]()
圖片:
![]() 1111MicrosoftInternetExplorer402DocumentNotSpecified7.8 磅Normal01111MicrosoftInternetExplorer402DocumentNotSpecified7.8 磅Normal0 龍海兒11(同微博) 同《電氣外傳》微信公眾號 我們在做一些數據管理的時候,往往要取最大值、最小值、求平均值、求和等。然而要得到以上結果是不是需要先對數據進行排序呢?那冒泡排序法自然是首選。讓我們一起來做一下吧。 創造一個情境,第一步肯定是先建立一個數組。我這里用的11個int類型組成的數組(從0-10是11個)。在里面隨機填上了0-10的亂序數據。 然后如圖開始編寫雙層for循環程序。外層循環控制排序的次數,11個數據只需要循環10次即可。因為最后一個肯定已經滿足了要求。內層循環需要處理每次的比較,遍歷數組。實現數據移位和交換。切遍歷次數依次在減少。 最后循環結束就可以得到組從小到大排序好的數據了。那么最小最大值直接從第一個和最后一個傳送出去即可。求平均值和求和自然水到渠成,當然不排序也可以直接先去運算。 “冒泡”的含義其實就相當于把最大的數據從最后一個位置,通過交換操作,一步一步“浮現”到第一個位置的。實現方法比較簡單,也易于理解。在一些小場景小規模數據處理中還是可以的,希望對大家有所幫助。 最后就寫到這里,還是歡迎各位看官來深入討論和批評指正! |
|
---|---|---|
|
哈嘍123
不和不如自己的人爭高低論短長!
級別: 略有小成
![]() |
我的建議是把提取的數放到一個新的數組里,而不是把現在的數組重新排序,例如現在的數組0的是7,按照你現在的思路,重新排序后的數組0變成了0,這不是一個好的解決辦法,把數組里的數排序、取值,都不能改變現有的數組對應的數值,但是,正如樓主說的,處理這類型的數組時,SCL語言是最簡潔的 |
---|---|
|
龍海兒
關注《電氣外傳》公眾號,知乎,CSDN等同號
級別: 論壇先鋒
![]() |
沒有最簡,只有更簡,重要的理解后,分兩個,分三個數組都可以。正序和逆序都可以。當然還有其它排序方法, |
|
---|---|---|
|
龍海兒
關注《電氣外傳》公眾號,知乎,CSDN等同號
級別: 論壇先鋒
![]() |
啥最短路徑啊? |
|
---|---|---|
|
flyfeky
bilibili 工控貴族
級別: 論壇先鋒
![]() |
//數組排序 #k := 99; // 輸入數組[0..99] WHILE #k >= 0 DO //外循環 #j := 0; #i := 0; WHILE #i <= #k DO // 內循環 IF #arr[#j] < #arr[#i] THEN #j := #i; // 記下最大值下標 END_IF; IF #i = #k THEN // 循環完成交換當前值和最大值 #buff := #arr[#i]; #arr[#i] := #arr[#j]; #arr[#j] := #buff; END_IF; #i := #i + 1; END_WHILE; #k := #k - 1; END_WHILE; 我寫了一個,也調試好了,歡迎參考 ,博圖v16 , k ,j,buff i都是int類型 ,arr是 [0..99] of int 輸入輸出類型 |
|
---|---|---|
|