我编写了一个简单的插入排序算法,它运行良好。我想要的是如果程序打印了半数排序的数组的内容。我可以很好地打印数组的内容,但我无法弄清楚如何判断数组是否排序了一半。这是我的代码
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*/
任何帮助表示赞赏, 干杯!
答案 0 :(得分:1)
在
a[i+1]= key;
如果位置p
等于数组的一半大小n/2
,如果n
是偶数,或n/2 + 1
,那么你的定义是一半在那种情况下),那么你的数组将被分类。