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