未这个代码能够实现排序,但是未把数组a里面的12换成比15大的数的时候8就丢失了,但是改的比15小的数就没问题
是在是想不明白了
另外这个还可优化吗?以小弟刚刚学到这里,表用后面的啊 看不懂啊!
#include <stdio.h>
void main()
{
int a[6]={5,8,6,3,12,15};
int b[6];
int i, k, j;
printf("未排序的数组:");
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
printf("\n");
//排序
b[0]=a[0];
for(i=1;i<6;i++)
{
for(j=0;j<i;j++)
{
if(a[i]<b[j])
{
for(k=i;k>0;k--)
{
b[k]=b[k-1];
}
b[j]=a[i];
break;
}
else if(a[i]>b[i-1])
{
b[i]=a[i];
}
}
}
//输出
printf("排序后的数组:");
for(i=0;i<6;i++)
{
printf("%d ",b[i]);
}
printf("\n");
getchar();
}
[此贴子已经被作者于2006-7-27 16:48:20编辑过]
----------------解决方案--------------------------------------------------------
沙发
----------------解决方案--------------------------------------------------------
晕啊 楼上的专业点嘛
----------------解决方案--------------------------------------------------------
未这个代码能够实现排序,但是未把数组a里面的12换成比15大的数的时候8就丢失了,但是改的比15小的数就没问题
是在是想不明白了
另外这个还可优化吗?以小弟刚刚学到这里,表用后面的啊 看不懂啊!
#include <stdio.h>
void main()
{
int a[6]={5,8,6,3,12,15};
int b[6];
int i, k, j;
printf("未排序的数组:");
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
printf("\n");
//排序
b[0]=a[0];
for(i=1;i<6;i++)
{
for(j=0;j<i;j++)
{
if(a[i]<b[j])
{
for(k=i;k>j;k--) /*向后调位置的条件弄错*/
{
b[k]=b[k-1];
}
b[j]=a[i];
break;
}
else if(a[i]>b[i-1])
{
b[i]=a[i];
}
}
}
//输出
printf("排序后的数组:");
for(i=0;i<6;i++)
{
printf("%d ",b[i]);
}
printf("\n");
getchar();
}
这样您再试试,这种代码看起来比较累.
程序大体算法是:
b[]是目标数组.
1.b[0]=a[0];
2. 两重循环,外重从a[1]到a[5],内重for(j=0;j<i;j++),
如果满足a[i]<b[j]则b[]向后移动(注意并不是整个数组都后移,而是从大于a[i]的元素开始,原程序就错在这里);
如果不满足,比较a[i]和b[]的最后一个元素,如果a[i]>b[i-1],则把a[i]存入b[i].
----------------解决方案--------------------------------------------------------
void insertsort(int data[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
temp=data[i];
j=i;
while(j>0&&temp>data[j-1])
{
data[j]=data[j-1];
j--;
}
data[j]=temp;
}
}
----------------解决方案--------------------------------------------------------
反了。
----------------解决方案--------------------------------------------------------
先理解插入排序的方式。
简化也要知道你是怎么排序的。
多用函数,少用些变量。再者考虑时间和空间复杂度。
----------------解决方案--------------------------------------------------------
反了。
----------------解决方案--------------------------------------------------------
什么反了?
----------------解决方案--------------------------------------------------------
您看看您的输出和我改后程序的输出就知道了。
----------------解决方案--------------------------------------------------------