C 当插入排序进行到一半时,打印数组的内容

C 当插入排序进行到一半时,打印数组的内容,c,arrays,algorithm,sorting,C,Arrays,Algorithm,Sorting,我已经写了一个简单的插入排序算法,它工作得很好。我想要的是,如果程序在半排序时打印数组的内容。我可以很好地打印数组的内容,但我不知道如何判断数组是半排序的。这是我的密码 void insertion_sort(int *a, int n) { /*initialise data field*/ int p;/*position index*/ int key;/*key item*/ int i;/*index in array*/ /*for pos

我已经写了一个简单的插入排序算法,它工作得很好。我想要的是,如果程序在半排序时打印数组的内容。我可以很好地打印数组的内容,但我不知道如何判断数组是半排序的。这是我的密码

void insertion_sort(int *a, int n) {

    /*initialise data field*/
    int p;/*position index*/
    int key;/*key item*/
    int i;/*index in array*/

    /*for position in array*/
    for (p=1; p<n; p++){
        key = a[p];
        i= p-1;

        /*while i is valid and a[i] is less then key, move the item forward one*/
        while (i >= 0 && a[i] > key){
            a[i+1]=a[i];
            i--;
        }/*end while*/

        a[i+1]= key;
    }/*end for*/  
}/*end insertion_sort*/
void插入\u排序(int*a,int n){
/*初始化数据字段*/
int p;/*位置索引*/
int键;/*键项*/
数组中的int i;/*索引*/
/*用于阵列中的位置*/
对于(p=1;p=0&&a[i]>键){
a[i+1]=a[i];
我--;
}/*结束时*/
a[i+1]=键;
}/*结束*/
}/*结束插入排序*/
感谢您的帮助, 干杯

之后

a[i+1]= key;

如果位置
p
等于数组大小的一半(
n/2
,如果
n
为偶数或
n/2+1
否则-在这种情况下,您对定义为一半的对象的调用),那么数组将被对半排序。

a[i+1]=键之后
,如果
p
等于
n/2
(可能使用一些“地板”或“天花板”功能),您的数组应该是半排序的。您所说的“半排序”到底是什么意思?有几种解释是可能的。