C语言_数组_插入法排序
今天刚看到数组的排序算法,书中给的是从小到大排序,
自己想尝试从大到小排序,
但是自己的程序始终跑不动,
求一个插入排序法从从大大小排序下面是从小到大排序的代码
#include<stdio.h>
#define N 10
void sort_insert(int a)
{
int b;
int i,j,temp;
for(i=1;i<N;i++)
{
temp=a;
for(j=i;temp<a;j--) a=a;
a=temp;
}
}
void output(int a)
{
int i;
printf("\nThe array is:\n");
for(i=0;i<N;i++) printf("a[%d]=%d\t",i,a);
}
int main()
{
int a={2,5,3,8,4,7,34,3,67,2};
sort_insert(a);
output(a);
return 0;
}
之所以原来的从小到大的排序没出错,是因为基本上没有用到的空间的值都是负值,所以你那样写也没有出错。但是一旦所排序的序列中有非常小的负值,可能就会出错了,下标溢出。。
#include<stdio.h>
#define N 10
void sort_insert(int a)
{
int b;
int i,j,temp;
for(i=1;i<N;i++)
{
temp=a;
for(j=i;temp>a && j>0;j--)//这里源程序是有问题的
a=a;
a=temp;
}
}
void output(int a)
{
int i;
printf("\nThe array is:\n");
for(i=0;i<N;i++) printf("a[%d]=%d\t",i,a);
}
int main()
{
int a={2 ,5,3,8,4,7,34,3,67,2};
sort_insert(a);
output(a);
return 0;
} sunrise085 发表于 2020-4-30 17:24
之所以原来的从小到大的排序没出错,是因为基本上没有用到的空间的值都是负值,所以你那样写也没有出错。但 ...
感谢,
我在查资料的时候看到这里别人比我多一个约束了,
但是没有考虑加进去,
页:
[1]