當前位置:成語大全網 - 書法字典 - c語言雙關鍵字排序誰會~進來看看。

c語言雙關鍵字排序誰會~進來看看。

我的想法是使用穩定的排序方法(我使用改進的冒泡方法),首先對次要關鍵字進行排序,然後對主要關鍵字進行排序。代碼如下,其中Sort_1將兩種排序集成在壹起,Sort直接執行這兩種排序。建議使用排序。

# include & ltstdio.h & gt

typedef struct _student {

int ID,Class

}學生;

//第壹個方法需要調用兩次。

void Sort _ 1(student * s,int count,int field ){

int i,j,k;

student tmp、* c =(student *)((int *)s+field);

for(I = 0;我& ltcount-1;i++) {

for(k = I,j = I+1;j & lt數數;j++)

if(*(int *)(c+k)& gt;*(int *)(c+j))k = j;

如果(k!=i)

tmp = s【k】,s【k】= s【I】,s【I】= tmp;

}

}

//第二種方法是直接排序兩次。

void排序(student *s,int count ){

int i,j,k;

學生tmp

for(I = 0;我& ltcount-1;i++) {

for(k = I,j = I+1;j & lt數數;j++)

if(s【k】。ID & gts【j】。ID)k = j;

如果(k!=i)

tmp = s【k】,s【k】= s【I】,s【I】= tmp;

}

for(I = 0;我& ltcount-1;i++) {

for(k = I,j = I+1;j & lt數數;j++)

if(s【k】。Class & gts【j】。class)k = j;

如果(k!=i)

tmp = s【k】,s【k】= s【I】,s【I】= tmp;

}

}

int main() {

int I;

學生a【5】= {

{1001,1},{1002,1},{1003,2},

{2001,1},{2002,2},

};

//Sort(a,5);

sort _ 1(a,5,0);

sort _ 1(a,5,1);

for(I = 0;我& lt5;i++)

printf(“Class:% d \ tID:% d \ n“,a【I】。類,a【I】。ID);

系統(“暫停”);

返回0;

}