首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这个排序算法哪不对啊该怎么处理

2012-04-19 
这个排序算法哪不对啊void insertsort(int a[],int n){int i,j,tfor(i1ini++){ta[i]ji-1if(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;
}

热点排行