找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4877|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語言數(shù)據(jù)比較,找出最大數(shù)和最小數(shù)的算法

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:510170 發(fā)表于 2021-4-19 14:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想從eeprom中取出80個數(shù),然后進(jìn)行比較,找出最大數(shù)和最小數(shù),應(yīng)該怎么寫程序呢?謝謝各位大神了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:94489 發(fā)表于 2021-4-19 15:38 | 只看該作者
1.先求和,算平均值
2.循環(huán)80個數(shù),計算與平均值的差
3,.比較差大小,得出最大最小值

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:47286 發(fā)表于 2021-4-19 15:40 | 只看該作者
本帖最后由 dzbj 于 2021-4-19 15:52 編輯

最笨的算法

uchar a=0;
uchar b=255;

for(x=0;x<80;x++)
{
if(a<eeprom[x])//求最大
{
a=eeprom[x];
}
if(b>eeprom[x])
{
b=eeprom[x];//求最小
}
}

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:332214 發(fā)表于 2021-4-19 17:20 | 只看該作者
偽代碼
回復(fù)

使用道具 舉報

5#
ID:332214 發(fā)表于 2021-4-19 17:41 | 只看該作者
偽代碼:
  1. //從 eeprom 讀取數(shù)據(jù)
  2. char* Get_eeprom_data(void)
  3. {
  4.      .......
  5.      return data
  6. }
  7. //獲取最大 最小 值
  8. void Get_max_or_min_mum (void)
  9. {
  10.      char max=0,min=127,i=0;
  11.      char *datanum=Get_eeprom_data();
  12.      for(i=0;i < 80;i++)
  13.      {
  14.           if(datanum[i] > max)
  15.           {
  16.                max = datanum[i];
  17.           }
  18.           else if(datanum[i] < min)
  19.           {
  20.                 min = datanum[i];
  21.           }
  22.           else
  23.           {
  24.               continue;
  25.            }
  26.      }
  27. // max 最大值  min 最小值
  28. }
復(fù)制代碼
回復(fù)

使用道具 舉報

6#
ID:451718 發(fā)表于 2021-4-19 18:01 | 只看該作者
有個非常經(jīng)典的算法,冒泡比較法了解下

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:908654 發(fā)表于 2021-4-19 21:13 | 只看該作者
冒泡算法比較好用。從eeprom中依次取數(shù)字,然后再寄存器中保存當(dāng)前最大值。遍歷一整遍后即可。
回復(fù)

使用道具 舉報

8#
ID:844772 發(fā)表于 2021-4-19 23:28 | 只看該作者
冒泡法是排序用的,這里只要簡單遍歷而已。
回復(fù)

使用道具 舉報

9#
ID:889094 發(fā)表于 2021-4-19 23:39 | 只看該作者
很多人都學(xué)過,如果沒學(xué)過就簡單走一遍,先變量shud,shux,shudi,shuxi標(biāo)記大數(shù),小數(shù),大數(shù)位置,小數(shù)位置,走一遍,連走邊比較,如果比大數(shù)大,大數(shù)賦值,大數(shù)位置指過去,如果比小數(shù)小,小數(shù)賦值,小數(shù)位置指過去,繼續(xù)下一個,一遍下來全搞定,這種一遍的事沒有什么太簡單或者太高精尖的算法

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

10#
ID:592807 發(fā)表于 2021-4-20 08:44 | 只看該作者
dzbj 發(fā)表于 2021-4-19 15:40
最笨的算法

uchar a=0;

所有的數(shù)都在10-20之間,你這算法會怎么樣。
回復(fù)

使用道具 舉報

11#
ID:47286 發(fā)表于 2021-4-20 09:50 來自手機(jī) | 只看該作者
黃youhui 發(fā)表于 2021-4-20 08:44
所有的數(shù)都在10-20之間,你這算法會怎么樣。

沒想那么多情況 人家不是沒說范圍么 先按最簡單的來唄
回復(fù)

使用道具 舉報

12#
ID:908839 發(fā)表于 2021-4-20 10:07 | 只看該作者
當(dāng)然可以使用冒泡排序,但只是為了找最值的話,未免有點殺雞用牛刀了,代碼實現(xiàn)思路如下:
回復(fù)

使用道具 舉報

13#
ID:510170 發(fā)表于 2021-4-20 11:10 | 只看該作者
謝謝各位回答,我去了解下冒泡算法。
回復(fù)

使用道具 舉報

14#
ID:518902 發(fā)表于 2021-4-20 15:33 | 只看該作者
你好! 我有一個解決辦法,既然你只是要找出最大最小,只需要遍歷一遍就行,不需要冒泡排序,冒泡排序還是挺占用資源的.
首先定義2個變量 ,max,min,然后分別裝入數(shù)組里的第一個元素,隨后分別遍歷數(shù)組, 前者: 如果就比他大的 就把數(shù)值換成那個大的,后者和前者一樣,只不過是比誰小.
這樣只需要遍歷2次數(shù)組即可,也可以一次遍歷完,都可以的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

15#
ID:518902 發(fā)表于 2021-4-20 15:34 | 只看該作者
也可以在一次遍歷中同時判斷,都可以的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

16#
ID:723547 發(fā)表于 2021-4-23 14:04 | 只看該作者
定義·兩個變量,最大和最小值,然后把第一個數(shù)付給他,然后循環(huán)比較
回復(fù)

使用道具 舉報

17#
ID:824490 發(fā)表于 2021-4-24 09:35 | 只看該作者
直接冒泡就行了。又不用排序,簡單:

定義MAX、MIN

max=arr[0];
min=arr[0];

從數(shù)組1到數(shù)組80

for (i=1;i<80;i++)
{
  if arr[i]>max;max=arr[i];//大于最大,則更新最大值
  if arr[i]<min;min=arr[i];//小于最小,則更新最小值
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表