这个排序算法哪不对啊该怎么处理
这个排序算法哪不对啊
void insertsort(int a[],int n)
{
int i,j,t;
for(i=1;i<=n;i++)
{
t=a[i];
j=i-1;
if(a[i]<a[i-1])
{
while(a[i]<a[j]&&j>=0)
{
a[j+1]=a[j];
a[j]=t;
j--;
}
}
else
a[j+1]=t;
}
}
main()
{
int a[11]={0,5,2,9,6,12,7,15,3,8,10},i;
insertsort(a,10);
for(i=0;i<=10;i++)
printf("%3d",a[i]);
}
------解决方案--------------------
insert函数中的变量j未初始化
------解决方案--------------------
#include "stdio.h"
void insertsort(int a[],int n)
{
int i,j,t;
for(i=1;i<=n;i++)
{
t=a[i];
j=i-1;
while( j>=0)
{
if(a[j+1]<a[j])
{
a[j+1]=a[j];
a[j]=t;
}
j--;
}
}
}
void main()
{
int a[11]={0,5,2,9,6,12,7,15,3,8,10},i;
insertsort(a,10);
for(i=0;i<=10;i++)
printf("%3d",a[i]);
}
------解决方案--------------------
void insertsort(int a[],int n)
{
int i,j,t;
for(i=1;i<=n;i++)
{
t=a[i];
j=i-1;
if(a[i]<a[i-1])
{
while(a[i]<a[j]&&j>=0)
{
a[j+1]=a[j];
a[j]=t;
j--;
}
}
else
a[j+1]=t;
}
}
main()
{
int a[11]={0,5,2,9,6,12,7,15,3,8,10},i;
insertsort(a,10);
for(i=0;i<=10;i++)
printf("%3d",a[i]);
}
------解决方案--------------------
insert函数中的变量j未初始化
------解决方案--------------------
#include "stdio.h"
void insertsort(int a[],int n)
{
int i,j,t;
for(i=1;i<=n;i++)
{
t=a[i];
j=i-1;
while( j>=0)
{
if(a[j+1]<a[j])
{
a[j+1]=a[j];
a[j]=t;
}
j--;
}
}
}
void main()
{
int a[11]={0,5,2,9,6,12,7,15,3,8,10},i;
insertsort(a,10);
for(i=0;i<=10;i++)
printf("%3d",a[i]);
}
------解决方案--------------------
- C/C++ code
void InsertSort(int a[], int n) { int i, j, tmp; for(i = 1; i < n; i++) { tmp = a[i]; for(j = i; j > 0 && tmp < a[j - 1]; j--) { a[j] = a[j - 1]; } a[j] = tmp; } }
------解决方案--------------------
我修改了下:可以了
void insertsort(int a[],int n)
{
int i,j,t;
for(i=1;i<=n;i++)
{
t=a[i];
j=i-1;
if(a[i]<a[j])
{
while(t<a[j]&&j>=0)
{
a[j+1]=a[j];
--j;
}
a[++j]=t;
}
//else
//a[j+1]=t;
}
}
int main()
{
int a[11]={0,5,2,9,6,12,7,15,3,8,10},i;
insertsort(a,10);
for(i=0;i<=10;i++)
printf("%d\40",a[i]);
return 0;
}