Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C+中实现插入排序算法+;使用数组和指针? 我试图学习C++、数组和指针。我决定实施这个计划。这是我的代码和错误的输出。我应该怎么做来纠正它?你能告诉我什么是我的错误吗?如果是常见的错误,我应该避免什么_C++_Arrays_Pointers - Fatal编程技术网

如何在C+中实现插入排序算法+;使用数组和指针? 我试图学习C++、数组和指针。我决定实施这个计划。这是我的代码和错误的输出。我应该怎么做来纠正它?你能告诉我什么是我的错误吗?如果是常见的错误,我应该避免什么

如何在C+中实现插入排序算法+;使用数组和指针? 我试图学习C++、数组和指针。我决定实施这个计划。这是我的代码和错误的输出。我应该怎么做来纠正它?你能告诉我什么是我的错误吗?如果是常见的错误,我应该避免什么,c++,arrays,pointers,C++,Arrays,Pointers,我的代码: // InsertionSort.cpp #include "stdafx.h" #include <iostream> int DeclareAnInteger(); int* DeclareAndShowTheArray(int n); int* InsertionSort(int *A, int n); int main() { int n = DeclareAnInteger(); int *A; A = DeclareAndShowTh

我的代码:

// InsertionSort.cpp

#include "stdafx.h"
#include <iostream>

int DeclareAnInteger();
int* DeclareAndShowTheArray(int n);
int* InsertionSort(int *A, int n);

int main()
{

   int n = DeclareAnInteger();
   int *A;
   A = DeclareAndShowTheArray(n);
   int *B;
   B = InsertionSort(A, n);

   system("PAUSE");
   return 0;
}

int DeclareAnInteger()
{
   int n;
   std::cout << "Please enter a positive integer n: ";
   std::cin >> n;
   return n;
}

int* DeclareAndShowTheArray(int n)
{
   int *A;
   A = (int *)alloca(sizeof(int) * n);
   for (int i = 0; i < n; i++)
   {
      std::cout << "Please enter the value of A[" << i + 1 << "]: ";
      std::cin >> A[i];
   }
   std::cout << "The unsorted array is: ";
   for (int i = 0; i < n; i++)
   {
      std::cout << A[i];
      std::cout << "\t";
   }
   std::cout << "\n";
   return A;
}

int* InsertionSort(int *A, int n)
{
   int k;
   //int *A = new int[n];
   for (k = 1; k < n; k++)
   {
      int key = A[k];
      int m   = k - 1;
      while (m >= 0 & A[m] > key)
      {
         A[m + 1] = A[m];
         m        = m - 1;
      }
      A[m + 1] = key;
   }
   std::cout << "The sorted array is: ";
   for (int i = 0; i < n; i++)
   {
      std::cout << A[i];
      std::cout << "\t";
   }
   std::cout << "\n" << std::endl;
   return A;
}
//InsertionSort.cpp
#包括“stdafx.h”
#包括
int DeclareAnInteger();
整数*申报和显示阵列(整数n);
int*InsertionSort(int*A,int-n);
int main()
{
int n=DeclareAnInteger();
int*A;
A=公布和显示阵列(n);
int*B;
B=插入排序(A,n);
系统(“暂停”);
返回0;
}
整数DeclareAnInteger()
{
int n;
std::cout>n;
返回n;
}
整数*申报和显示阵列(整数n)
{
int*A;
A=(int*)alloca(sizeof(int)*n);
对于(int i=0;i这是一个大问题:

A = (int *)alloca(sizeof(int) * n);
alloca
函数在堆栈上分配,当函数返回给您一个错误指针时,以及当您取消引用该指针时,它将丢失


如果你正在编程C++,则使用<代码>新< /C> >,如果你编程C,然后使用<代码> Malc 。< /P>请不要用图片粘贴一些文本。只粘贴文本本身。