插入排序算法

插入排序算法,请指教

void InsertSort(int a[],int n){
    int i,j,temp;
    for(int k=0;k<n;k++){
        cout<<a[k]<<" ";
    }
    cout<<endl;
    for(i=1;i<n;i++){
        temp=a[i];
        for(j=0;j<i;j++){
            if(a[i]<a[j]){
                int key_j=j;//key_j保存从无序插入有序区的标志位
                int key_i=i;//key_i保存从无序区开始的标志位
                while(key_i>key_j){
                    a[key_i]=a[key_i-1];
                    key_i--;
                }
                a[key_j]=temp;
            }
        }
    }
    for(int k=0;k<n;k++){
        cout<<a[k]<<" ";
    }
};
int main()
{
    int a[10]={46,58,15,45,90,18,10,62};

    InsertSort(a,8);
    return 0;
}

本身对算法理解不深,上学就没好好上过,想重新学习下数据结构,不知道对于插入排序的理解是否正确,大家多指教,谢谢
算法 c

------解决方案--------------------
引用:
引用:粗略看了一下 思路对,运行结果也对。
那么你的问题是什么?!
我就想问下我的思路对不对啊。。。。。。


.......没错

打扑克牌时,怎么码牌,就怎么插