算法是和標準C++壹樣的,基本思路就是和相鄰的數據判斷,比他大就換位置。代碼大致如下
String?inString;//儲存從串口獲取的字符串int?num[100];//存儲需要排列的數據數組100位最大值,int表示只接受整型變量
int?p=0,a=0;
void?boboUp()//該函數是冒泡排序的循環
{
int?i,j,temp;?for(j=0;j<p;j++)?
{?
for(i=0;i<p-j;i++)
{
if(num[i]?>?num[i+1])
{?temp?=?num[i];
num[i]?=?num[i+1];
num[i+1]?=?temp;
}
}
} Serial.println("Update?:");//Arduino向串口發送排序好的數組 for(int?k=0;k<p+1;k++) { Serial.print(num[k]); Serial.println(","); }}
void?setup()
{
Serial.begin(9600);
}
void?loop()?//讀取串口數據並轉換int(不會告訴妳是從examples扒下來的)
{
while?(Serial.available()?>?0)
{
inString?+=?char(Serial.read()()); delay(2); a=1;}
if(a==1)?
{
num[p]=inString.toInt(); boboUp(); inString=""; p++; a=0;}
}
我用自己的板子測試可用,結果如下圖
用法是在Serial Monitor最上面的編輯框裏輸入壹個數字單擊send就會向數組裏保存壹個數字(不支持輸入壹串數字,妳試著自己改代碼吧),當數組更新時arduino就會通過串口向計算機返回壹次排好序的數組。最大支持100個整形數字,需要更大的或者需要排列浮點數據之需要根據代碼註釋修改即可。