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
(可能使用一些“地板”或“天花板”功能),您的数组应该是半排序的。您所说的“半排序”到底是什么意思?有几种解释是可能的。