最后的子函数为什么不能达到排序效果
#include<stdio.h>void main()
{
extern void sort(int x[],int n);
int a;
int i;
for(i = 0;i < 10;i++)
{
scanf("%d",&a);
}
for(i = 0;i < 10;i++)
{
printf("%d ",a);
}
printf("\n");
sort(a,10);
for(i = 0;i < 10;i++)
{
printf("%d ",a);
}
}
void sort(int x[],int n)
{
int i,j,temp;
for(i = 0;i < (n - 1);i++)
{
j = (i + 1);
if(i < j)
{
temp = x;
x = x;
x = temp;
}
}
} 本帖最后由 jackz007 于 2019-2-27 00:08 编辑
j = (i + 1);
if(i < j)
{
temp = x;
x = x;
x = temp;
}
把数组索引值的大小作为调整元素顺序的依据不知楼主是如何考虑的。
排序函数 sort() 没有功能,我已经重写,楼主可以测试效果。
#include <stdio.h>
void sort(int x[] , const int n)
{
int i , j , temp ;
for(i = 1 ; i < n ; i ++) {
j = i ;
while(j > 0 && x < x) {
temp = x ;
x = x ;
x = temp ;
j -- ;
}
}
}
main(void)
{
int i , a ;
for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a) ;
for(i = 0 ; i < 10 ; i ++) printf("%d " , a) ;
printf("\n") ;
sort(a , 10) ;
for(i = 0 ; i < 10 ; i ++) printf("%d " , a) ;
printf("\n") ;
}
谢谢,理解了,我的做法只是进行了一次调换,想的太简单了
页:
[1]