【发布时间】:2017-09-19 09:25:51
【问题描述】:
我写了一个简单的插入排序算法,效果很好。我想要的是程序是否在半排序时打印数组的内容。我可以很好地打印数组的内容,但我不知道如何判断数组何时是半排序的。这是我的代码
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*/
任何帮助表示赞赏, 干杯!
【问题讨论】:
-
在
a[i+1]= key;之后,如果p等于n / 2(可能使用一些“地板”或“天花板”函数?)你的数组应该是半排序的。 -
“半排序”到底是什么意思?可以有多种解释。
标签: c arrays algorithm sorting