この選択ソートですべての比較を追跡する必要がありますが、1000 のリストから値に対して返される値は 1 つだけです。正しく実装したかどうかはわかりませんが、比較カウントを正しく配置したことは確かです/ . 通常、選択ソートには一定量のキー比較がありますが、インストラクターはそれらを追跡するための数式の使用を禁止しています。この出力が返される理由に興味があります。
comp = 1
swap = 1
template <class elemType>
void selectionSort(elemType list[], int length)
{
int loc, minIndex;
int first;
int last, second;
int swaps =0;
int comp = 0;
minIndex = first;
for (loc = 0; loc < length; loc++)
{
comp+=1;
for(loc = first +1; loc<=last; loc++)
{
comp+=1;
if(list[loc]<list[minIndex])
minIndex=loc;
comp+=1;
}
elemType temp;
temp= list[first];
list[first]= list[second];
list[second] = temp;
swaps+=1;
}
// comp = (length *(length-1)/2);
cout<<"swaps= "<<swaps<<endl;
cout<<"comps= "<<comp<< endl;
}
どんな考えでも大歓迎です