只是好奇是否有更好的方法来排序数组,然后我在这里。我知道它最多只能排序64个元素:(
而且,如果有办法减少排序函数本身的BigO时间。也许,只是跳过'last_index'中的那些元素就可以了。
有什么想法吗?
void sort_array(unsigned short unsorted_array[] ,
unsigned long long last_index ,
unsigned char sort_depth ,
unsigned char ary_len)
{
int r, q, hold;
r = q = hold = 0;
for(r=0; r<ary_len;r++)
{
if((hold <= unsorted_array[r]) & !(last_index & (1 <<r)))
{
hold = unsorted_array[r];
q = r;
}
last_index |= (1 << q);
printf("\n The value at index [%d@%d]" , hold , q);
puts("");
if(--sort_depth != 0)
{
sort_array(unsorted_array, last_index , sort_depth , ary_len);
}
}//@djf This is screw-up and wont work. Please test before making changes.
}
void main(void)
{
int x, y;
x = y = 0;
unsigned short ary[10] = {123,2,23,3,5};
sort_array(ary, x, 5, 5);
}
答案 0 :(得分:6)
使用qsort()
是一种更好的方法,因为: