c - "Terminated due to time out"C 中的错误,插入排序?

标签 c insertion-sort

我正在尝试使用下面的方法进行插入排序,但出现“由于超时而终止”的错误。可能是什么原因?我已经单独描述了 Print 的 prin 函数。

示例输入

6
1 4 3 5 6 2

示例输出

1 4 3 5 6 2 
1 3 4 5 6 2 
1 3 4 5 6 2 
1 3 4 5 6 2 
1 2 3 4 5 6 

程序

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>

void prin(int ar_size,int* ar);

void insertionSort(int ar_size,int*  ar) {
    int i=1;
    for (i;i<=ar_size;i++)
    {
        prin(ar_size, ar);
        int j=0;
        while(j<i)
        {
            if(*(ar+i) < *(ar+j))
            {
                int temp;
                temp= *(ar+j);
                *(ar+i)= *(ar+j);
                *(ar+j)= temp;
                j++;
            }
        }
    }


}

void prin(int ar_size,int* ar)
{
    int p;
    printf("\n");
    for(p=0; p < ar_size;p++)
    {
        printf("%d ",*(ar+p));
    }

}

int main(void) {

    int ar_size;
    scanf("%d", &ar_size);
    //int* _ar=(int*) calloc(_ar_size,sizeof(int)); //Tried this and below    decleration but i get the same error
    int _ar[ar_size], _ar_i;
    for(_ar_i = 0; _ar_i < ar_size; _ar_i++) {
        scanf("%d", &_ar[_ar_i]);
    }

    insertionSort(ar_size,_ar);

    return 0;
}

最佳答案

您的jinsertionSort仅在该条件内递增。该程序很可能在 while (j<i) 内永远循环。循环。

关于c - "Terminated due to time out"C 中的错误,插入排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509605/

相关文章:

c - Linux 和 C : How to set file reading priority in multi-process program while recording mp4 files

c - 插入排序算法

c - 通过插入排序对数组进行排序

c - 这是选择排序还是插入排序?请给我正确的方向

c - C 中字符串中间的子字符串

c - 关于优化这个 C 程序的建议?

c - 如何使用 C 在 BSD 套接字中处理 3 路 send() 和 receive()

c - Bluez D 总线 : Bluetooth speaker Play/Pause/Next/Previous button handling

algorithm - 插入排序比较这个数组中的数字所需要的确切比较次数是多少?

java - 调用插入排序方法时出错以及如何打印数组列表