|
发表于 2011-4-29 17:45:39
|
显示全部楼层
效率 明显不高 可以使用希尔排序 或者 快速排序的方法来进行排序
#include "stdio.h"
#include "malloc.h"
int *init_shell_sort(int size)
{
return (int *)malloc(sizeof(int) * size);
}
void shell_sort(int *arrary, int length)
{
int loop, loop_in, gap, temp;
gap = length;
while(gap >= 1)
{
gap = gap / 2;
for( loop = 0; loop < length - gap; loop++)
{
if( gap )
loop_in = loop + gap;
else
loop_in = loop +1;
if( loop_in != length) //дµÄºÜ²»ºÃ
{
if(arrary[loop] > arrary[loop_in])
{
temp = arrary[loop];
arrary[loop] = arrary[loop_in];
arrary[loop_in] = temp;
}
}
}
}
}
int main(void)
{
int len, len_buf, len_print, *arrary, *arrary_buf, *arrary_print;
printf("The Length of Arrary:");
scanf("%d",&len);
len_print = len_buf = len;
arrary = arrary_buf = arrary_print =init_shell_sort( len );
printf("The Elemments Of Arrary:");
while( len-- )
{
scanf("%d",arrary++);
}
shell_sort(arrary_buf, len_buf);
while( len_print --)
{
printf("%d ",*arrary_print++);
}
printf("\n");
return 0;
}
有些不完善的地方,希望大家帮忙完善 |
|