qq_14908935
qq_14908935
2021-05-01 20:47
采纳率: 50%
浏览 18

请问各位大佬,我这个insert函数为什么报错?

#include<iostream>
#define maxsize 100
using namespace std;

int arr[maxsize]={-2,3,6,1,7,9,11,4,-5,9};
int length=10;

void partation(int arr[],int length,int k)
{
    
    int i=0;
    int j=length-1;
    int temp=arr[0];
   while(i<j)
    {
        while(i<j&&k<=arr[j])
        --j;
        if(i<j)
        {
            arr[i]=arr[j];
            i++;
        }
        while(i<j&&k>arr[i])
        ++i;
        if(i<j)
        {
            arr[j]=arr[i];
            j++;
        }
        
    }
    arr[i]=temp;
    
}

int insert(int arr[],int length,int n,int c)
{
    if(n<0||n>length-1||length>=maxsize)
    return 0;
    for(int i=length-1;i>n;++i)
    arr[i+1]=arr[i];
    arr[n]=c;
    return 1;
}


int main()
{
    partation(arr,length,5);
    insert(arr,length,3,100);
    for(int i=0;i<length;++i)
    cout<<arr[i]<<" ";
    
    return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • happyparrot
    快乐鹦鹉 2021-05-01 21:04
    已采纳

    错了,循环中i>n改成i>n-1,这样第n个才能后移

    点赞 1 评论
  • happyparrot
    快乐鹦鹉 2021-05-01 21:00

    for(int i=length-1;....) arr[i+1]=... 当i=length-1时,arr[i+1]就越界了

    点赞 1 评论
  • it_xiangqiang
    C和C++技术博客 2021-05-03 16:47

    C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html

    点赞 评论

相关推荐