使用结构数组中的字符串进行选择排序

时间:2013-10-25 00:32:46

标签: c arrays pointers struct selection-sort

我在结构中选择了一些字符串时出现问题。我输入的所有值在排序后都不会改变位置。我认为我遗漏了一些小问题,但我无法在互联网上找到相关的帮助。 *p_customer_start指向数组的开头。 p_outerp_inner应该进行排序。有谁知道出了什么问题?

void sort_customers(int quantity, struct customer *p_customer_start)
{
struct customer *p_customer,
*p_outer,
*p_inner,
temp_customer;

printf("\nInside the sorting function.");

for(p_customer = p_customer_start; (p_customer-p_customer_start) < quantity; p_customer++)
{
    p_inner = p_customer;

    for(p_outer = p_customer + 1; p_outer <= quantity; p_outer++)
        if(strcmp(p_outer->customer_name, p_inner->customer_name) > 0)
            p_inner = p_outer;

    temp_customer = *p_customer;
    *p_customer = *p_inner;
    *p_inner = temp_customer;

    p_inner++;
}

 return;
}

1 个答案:

答案 0 :(得分:0)

可能是这种比较

p_outer <= quantity

你可能想尝试这个

p_outer <= (p_customer_start + (quantity-1))

p_outer 将指向某个系统内存位置,并且内存位置的地址可能大于您要排序的数组中的元素数。