У меня есть эта структура:подкачка элементы из массива структуры быстрее
typedef struct data{
char name[100], pseudo[100];
int num0, num1, num2, num3, num4;
long int lnum0, lnum1, lnum2, lnum3, lnum4;
double dnum0, dnum1;
}data;
data list[50]
я создаю массив этой структуры и сортировать их с помощью алгоритма быстрой сортировки. Для этого я должен поменять элемент с помощью этой функции:
void swap(data list[], i, j){
data tmp;
tmp.num1 = list[i].num1
list[i].num1 = list[j].num1
list[j].num1 =tmp.num1
//using memmove to avoid overlaping from the strcpy function
memmove(temp.name,list[i].name,strlen(list[i].name));
memmove(list[i].name,list[j].name,strlen(list[j].num1));
memmove(list[j].name,tmp.name,strlen(tmp.name));
}
У меня есть 16 элемент в моей структуры, и я должен повторить 16 раз эту функцию, чтобы поменять их все. Мой вопрос: есть ли еще более простой, быстрый или более удобный способ, или мы можем оптимизировать эту функцию?
Возможно, создайте массив указателей на эти структуры и замените указатели вместо фактических структур? – chrk
Ваш код 'memmove' не имеет смысла. – melpomene
Если вам нужно заменить фактические структуры вместо указателей, 'data tmp; tmp = list [i]; list [i] = list [j]; list [j] = tmp; 'является, конечно, более простым * кодом. И это может быть намного быстрее. –