嘿傢伙我一直在這工作了3天,並沒有拿出我看到的每一個。排序一個數組而不改變它C
我正在嘗試使用大約250個浮點數組並找到第K個最大值,而無需改變該數組或創建一個新數組。
我可以改變它或創建一個新的,因爲其他功能需要以正確的順序放置數據,而且我的Arduino不能在其存儲空間中保存更多值,所以最簡單的兩個選項都沒有了。
Array中的值可能(也可能會)在它們中有重複。
作爲一個EG:如果你有數組::: 1,36,2,54,11,9,22,9,1,36,0,11; 從最大到最小。將:: 1)54 2)36 3)36 4)22 5)11 6)11 7)9 8)9 9)2 10)1 11)1 12)0
任何幫助將是偉大的。 這可能是過分的要求爲會爲我做到這一點很好:)哈哈
這裏功能是我到目前爲止的代碼,但我還沒有試圖讓重複的工作卻並 它一些原因只給我一個答案由於某種原因,這2 ,,,不知道爲什麼,雖然
void setup()
{
Serial.begin(9600);
}
void loop()
{
int Array[] = {1,2,3,4,5,6,7,8,9,10};
int Kth = 6; //// just for testing putting the value as a constant
int tr = 0; /// traking threw the array to find the MAX
for (int y=0;y<10;y++) //////////// finding the MAX first so I have somewhere to start
{
if (Array[y]>Array[tr])
{
tr = y;
}
}
Serial.print("The max number is ");
int F = Array[tr];
Serial.println(F); // Prints the MAX ,,, mostly just for error checking this is done
///////////////////////////////////////////////////////// got MAX
for (int x = 1; x<Kth;x++) //// run the below Kth times and each time lowering the "Max" making the loop run Kth times
{
for(int P=0;P<10;P++) // run threw every element
{
if (Array[P]<F)
{
for(int r=0;r<10;r++) //and then test that element against every other element to make sure
//its is bigger then all the rest but small then MAX
{
Serial.println(r);
if(r=tr) /////////////////// done so the max dosent clash with the number being tested
{
r++;
Serial.println("Max's Placeing !!!!");
}
if(Array[P]>Array[r])
{
F=Array[P]; ////// if its bigger then all others and smaller then the MAx then make that the Max
Serial.print(F);
Serial.println(" on the ");
}
}}}}
Serial.println(F); /// ment to give me the Kth largest number
delay(1000);
}
是K的一個數組大小的選項? –