能不能帮我看下哪里错了,这是一个简单选择排序

#include
using namespace std;
void main()
{
int r[7] = {9,4,6,2,5,4,3};
int i,j,k,temp,p;
for(i=0;i<7;i++)
{
temp=r[0];
k=i;
for(j=i+1;j<7;j++)
{
if(r[j]<temp)k=j;
if(i!=k)
{
temp=r[0];
r[i]=r[j];
r[j]=temp;
}
}
for(p=0;p<7;p++)
{cout<<r[p]<<endl;}
}

}

 #include<iostream>
using namespace std;
int main()
{
    int r[7] = {9, 4, 6, 2, 5, 4, 3};
    int i, j, k, temp, p;
    for(i = 0; i < 7; i++)
    {
        temp = r[i];
        k = i;
        for(j = i + 1; j < 7; j++)
        {   
            if(r[j]<temp) {
                k = j;
                temp = r[j];
            }
        }
        if(i != k)
        {
            temp = r[i];
            r[i] = r[k];
            r[k] = temp;
        }
    }

    for(p = 0; p < 7; p++)
    {
        cout<<r[p]<<endl;
    }
    return 0;
}

if(r[j]<temp)k=j;
后面少一个
temp=r[j];
否则temp并非是最小值

但是实际上temp本身是多余的,因为有k,所以temp可以用r[k]代替

temp=r[0];
r[i]=r[j];
r[j]=temp;

这里也不对,是交换i k不是i j