我有一個由兩個元素char *word
和int number
組成的結構。當我想用冒泡排序對它們進行排序,我必須寫交換部分對他們倆的:使用冒泡排序排序結構數組 - 如何加速結構成員交換
int i,j,tmp;
char * temp;
for(i=0; i<max;i++)
{
for(j=0;j<max-i;j++)
{
if(strcmp(array[j].word,array[j+1].word)>0)
{
temp=array[j].word;
array[j].word=array[j+1].word;
array[j+1].word=temp;
tmp=array[j].number;
array[j].number=array[j+1].number;
array[j+1].number=tmp;
}
}
}
編輯我的struct聲明
typedef struct{
char *word;
int number;
}
words;
words *array=NULL;
如果我數組中有n個元素?交換一切將會非常耗時。有什麼辦法可以省略這個嗎?
OF COURSE除了其他排序算法,我不想使用(如qsort
)。
你爲什麼要優化在bubblesort中的交換?你爲什麼不想使用像quicksort這樣的真正的排序算法? –
@AdamRosenfield也許他正在嘗試學習bubblesort? – James
你聲明struct嗎?也許你可以有一個指向struct的指針數組,而不是struct的數組。 – nhahtdh