这是一个C++的排序算法,运行结果总是不正确,求大神帮帮忙改一下

(1)随机生成一组关键码(关键码为整型,取值范围为0~99);
(2)采用插入排序算法进行排序,输出排序结果;
(3)采用交换排序算法进行排序,输出排序结果;
(4)采用选择排序算法进行排序,输出排序结果;

 #include <iostream>
#include <string>
#include <ctime>
#include <stdlib.h>
using namespace std;
//插入排序
void insertSort(int r[],int n)
{
    int i,j;
    for (i=2;i<=n;i++){
        r[0]=r[i];
        for( j=i-1;r[0]<r[j];j--)
            r[j+1]=r[j];
        r[j+1]=r[0];
    }
}
//交换排序
void BubbleSort(int r[],int n)
{
    int i,j;
    for (i = 0; i < n-1; i++){
        for (j= 0; j < n-1-i; j++){
            if (r[j] > r[j+1]){
                int temp = r[j+1];
                r[j+1] = r[j];
                r[j] = temp;
            }
        }
    }
}
//选择排序
void SelectSort(int r[],int n){
    int i,j;
    for (i=1; i < n; i++){
        int index = i;
        for (j=i+1; j<=n;j++){
            if (r[j] < r[index]){
                index = j;
            }
        }                   //找到了最小的值再交换
        if(index!=i){
        int temp = r[i];
        r[i] = r[index];
        r[index] = temp;
        }
    }
}
void useRand(int r[],int size)
{
    srand((unsigned)time(NULL));
    cout << "the rand number is:" <<endl;
        for(int i=0;i<=9;i++)
        {
            r[i]=rand()%99+1;
            cout  << r[i] << ",";
        }
        cout << endl;
}
void copy(int a[],int b[],int n)
{
    for(int i=0;i<n;i++)
        b[i]=a[i];
}
void print(int a[10],int n)
{
    for(int i=0;i<n;i++)
        cout << a[i] << ",";
    cout << endl;
}
int main(){
    int r[10],a[10],b[10],c[10];
    useRand(r,10);
    copy(r,a,10);
    copy(r,b,10);
    copy(r,c,10);
    insertSort(a,10);
    cout << "插入排序后:" << endl;
    print(a,10);
    BubbleSort(b,10);
    cout << "交换排序后:" << endl;
    print(b,10);
    SelectSort(c,10);
    cout << "选择排序后:" << endl;
    print(c,10);
    return 0;
}

除了交换,其他都有错,看注释

 void insertSort(int r[], int n)
{
    int i, j;
    int t;              //不能用r[0]暂时存储准备插入的元素,用另一个变量t
    for (i = 0; i < n; i++) {       //从0开始,不能等于n
        t = r[i];
        for (j = i - 1; t < r[j]; j--)
            r[j + 1] = r[j];
        r[j + 1] = t;
    }
}
//交换排序
void BubbleSort(int r[], int n)
{
    int i, j;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            if (r[j] > r[j + 1]) {
                int temp = r[j + 1];
                r[j + 1] = r[j];
                r[j] = temp;
            }
        }
    }
}
//选择排序
void SelectSort(int r[], int n) {
    int i, j;
    for (i = 0; i < n; i++) {       //i从0开始
        int index = i;
        for (j = i + 1; j < n; j++) {   //不能等于n
            if (r[j] < r[index]) {
                index = j;
            }
        }                 
        if (index != i) {
            int temp = r[i];
            r[i] = r[index];
            r[index] = temp;
        }
    }
}

```#include
#include
#include
#include
using namespace std;
//????

void insertSort(int r[],int n)
{
int i,j;
int t;
for (i=1;i t=r[i];
for( j=i-1;t=0;j--)

r[j+1]=r[j];
r[j+1]=t;
}
}
//????
void BubbleSort(int r[],int n)
{
int i,j;
for (i = 0; i < n-1; i++){
for (j= 0; j < n-1-i; j++){
if (r[j] > r[j+1]){
int temp = r[j+1];
r[j+1] = r[j];
r[j] = temp;
}
}
}
}
//????
void SelectSort(int r[],int n){
int i,j;
for (i=0; i < n; i++){
int index = i;
for (j=i+1; j<n;j++){
if (r[j] < r[index]){
index = j;
}
} //??????????
if(index!=i){
int temp = r[i];
r[i] = r[index];
r[index] = temp;
}
}
}
void useRand(int r[],int size)
{
srand((unsigned)time(NULL));

    for(int i=0;i<size;i++)    
    {
        r[i]=rand()%99+1;
     //   cout  << r[i] << ",";
    }
 //   cout << endl;

}
void copy(int a[],int b[],int n)
{
for(int i=0;i<n;i++)
b[i]=a[i];
}

void print(int a[],int n)

{
for(int i=0;i<n;i++)
cout << a[i] << ",";
cout << endl;
}

int main(){
int r[10],a[10],b[10],c[10];
useRand(r,10);
cout << "the rand number is:" <<endl;
print(r,10);
copy(r,a,10);
copy(r,b,10);
copy(r,c,10);
insertSort(a,10);
cout << "insertSort:" << endl;
print(a,10);

BubbleSort(b,10);
cout << "BubbleSort:" << endl;
print(b,10);
 SelectSort(c,10);
cout << "SelectSort:" << endl;
print(c,10);

return 0;

}