選出當權權值最小結點
select函式,不會寫3

uj5u.com熱心網友回復:
思路如下:①假設現在已經取得權值最小的兩個結點位置min_first=min_second=0,權值為min1=min2=10000(一個較大的數,隨意)
②遍歷權值陣列,每次都做比較更新權值最小的兩個結點位置和權值
代碼如下:
int min_first,min_second,min1,min2;
min_first=min_second=0;
min1=min2=10000;
for(int i = 1; i<= n ; i++)
{
if(HT[i].parent==0)
{
if(HT[i].weight<min1)//權值最小的結點位置毎更新一次,之前權值最小的結點變成第二小
{
min2=min1;
min_second = min_first;
min1 = HT[i].weight;
min_first = i;
}
else if(HT[i].weight<min2)
{
min2 = HT[i].weight;
min_second = i;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/121403.html
標籤:疑難問題
下一篇:小白求助isql
