void listbyname()
{
int i,j,k;
struct person t;
for(i = 1; i < nNum; i++)
{
if(strcmp(per[i].cName,per[i-1].cName)<0)
{
t = per[i];
j = i - 1;
do
{
per[j+1]=per[j];
j--;
}
while((strcmp(t.cName,per[j].cName) < 0 && j >= 0));
per[j+1] = t;
}
}
printf("\n\t排序成功!是否顯示?");
printf("\n\t1.是 2.否");
printf(" 請輸入您的數字選擇:");
scanf("%d",&k);
if(1 == k)
showall();
return;
}
uj5u.com熱心網友回復:
while就是在冒泡t = per[i];//記錄下當前要冒泡的元素
per[j+1]=per[j];//要冒泡的元素滿足while的條件(比前一個元素小)時把該元素往前放
j--;//往前回圈比較
while((strcmp(t.cName,per[j].cName) < 0 && j >= 0));//將要冒泡的元素和前面的元素比較
uj5u.com熱心網友回復:
這應該是插入排序,while回圈是在找要插入的位置。 per[j+1]=per[j];這個操作就是在騰空間,找到要插入的位置。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35913.html
標籤:C語言
