读书人

大神帮小弟我看下这个插入排序的程序

发布时间: 2013-04-20 19:43:01 作者: rapoo

大神帮我看下这个插入排序的程序,,,,,
void InsertionSort(int data[],int num)
{
for(int i=1;i<num;i++)
{
int temp=data[i];
for(int j=0;j<i;j++)
{
if(data[j]>temp)
{
for(int k=i;k>j;k--)
{
data[k]=data[k-1];
}
data[j]=temp;

}
break;
}
}
}
void main()
{
int a[10]={1,3,5,7,9,2,4,6,8,0};
InsertionSort(a,10);
for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
}

输出是不对的,,请问什么地方错了啊?
[解决办法]
void InsertionSort(int data[],int num)
{
for(int i=1;i<num;i++)
{
int temp=data[i];
for(int j=i-1; j>=0 && data[j]>temp; j--)
{
data[j+1] = data[j];
}
data[j+1] = temp;
}
}
[解决办法]
break用的不对。

void InsertionSort(int data[],int num)
{

for (int i = 1; i < num; i++)
{
int temp = data[i];
int j = i;
while ((j > 0) && (data[j - 1] > temp))
{
data[j] = data[j - 1];//交换顺序
--j;
}
data[j] = temp;
}
}
void main()
{
int a[10]={1,3,5,7,9,2,4,6,8,0};
InsertionSort(a,10);
for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
}

[解决办法]
void InsertionSort(int data[],int num)
{
for(int i=1;i<num;i++)
{
int temp=data[i];
for(int j=i-1; j>=0 && data[j]>temp; j--)
{
data[j+1] = data[j];
}
data[j+1] = temp;
}
}

读书人网 >C语言

热点推荐