在插入排序的一半时打印数组的内容

时间:2017-09-19 09:25:52

标签: 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 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*/

任何帮助表示赞赏, 干杯!

1 个答案:

答案 0 :(得分:1)

a[i+1]= key;

如果位置p等于数组的一半大小n/2,如果n是偶数,或n/2 + 1,那么你的定义是一半在那种情况下),那么你的数组将被分类。