【发布时间】:2016-11-11 14:24:12
【问题描述】:
我需要在输入值时对数组进行排序,这意味着当用户输入数字时,数组需要对自身进行排序:到目前为止我所做的是:
void MoveRight(int *a,int n, int startIndex)
{
int j,temp;
j=n-1;
for(int i=startIndex;i<n;i++)
{
temp = a[j];
a[j]=a[i];
a[i]=temp;
}
}
void InsertionSort(int *a,int n)
{
int i,number,j;
printf("Enter %d numbers for the array\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&number);
for(j=0;j<=i;j++)
{
if(number<a[j])
{
MoveRight(a,n,j);
a[j]=number;
break;
}
}
}
}
进入后:1,3,2,4,5
我得到的数组是:-858993460,-858993460,-858993460,-858993460,-858993460
【问题讨论】:
-
什么是
a?发布InsertionSort的电话 -
数组
a中的初始值是什么?当您输入1时,只有当数组中的任何元素大于 1 时,它才会进入数组。从您的输出中,数组包含小于1的-858993460,因此数组中没有存储任何值 -
你需要修改
InsertionSort的算法 -
提示:
-858993460或(十六进制的 0xCCCCCCCC)是 Microsoft Visual Studio 调试版本用于未初始化自动变量的值。 -
如果插入的值大于数组中的任何值,则不存储任何值。您需要检测该条件并在它发生时将值最后插入数组中。
标签: c arrays sorting insertion-sort