void CSortDlg::OnSelectionSort() { CClientDC dc (this) ; dc.SetBkColor(RGB(180,180,180)); int objectName[SORT_OBJECT_NUM]; //每个位置对应的成员名
//初始化每个位置对应的成员
for (int i = 0; i < SORT_OBJECT_NUM; i++) { objectName[i] = i; }
//交换排序
for(i=0;i<SORT_OBJECT_NUM;i++) { for(int j=i+1;j<SORT_OBJECT_NUM;j++) { if(sortObject[objectName[j]].iNumber <sortObject[objectName[i]].iNumber) { //交换成员序号 int iTemp; iTemp = sortObject[objectName[j]].iSeq; sortObject[objectName[j]].iSeq =sortObject[objectName[i]].iSeq; sortObject[objectName[i]].iSeq = iTemp;
//交换成员位置 iTemp = objectName[j]; objectName[j] = objectName[i]; objectName[i] = iTemp;
//显示新位置
CString strName; CString strNum; //显示j位置的成员
strName.Format("%d",sortObject[objectName[j]].iName); dc.TextOut(objectCoord[sortObject[objectName[j]].iSeq].x-5, objectCoord[sortObject[objectName[j]].iSeq].y-8,strName);
if(sortObject[objectName[j]].iNumber<1000) { strNum.Format(" %d",sortObject[objectName[j]].iNumber); } else { strNum.Format("%d",sortObject[objectName[j]].iNumber); } dc.TextOut(objectCoord[sortObject[objectName[j]].iSeq].x-15, objectCoord[sortObject[objectName[j]].iSeq].y-30,strNum); //显示i位置的成员
strName.Format("%d",sortObject[objectName[i]].iName); dc.TextOut(objectCoord[sortObject[objectName[i]].iSeq].x-5,objectCoord[sortObject[objectName[i]].iSeq].y-8,strName);
if(sortObject[objectName[i]].iNumber<1000) { strNum.Format(" %d",sortObject[objectName[i]].iNumber); } else { strNum.Format("%d",sortObject[objectName[i]].iNumber); } dc.TextOut(objectCoord[sortObject[objectName[i]].iSeq].x-15, objectCoord[sortObject[objectName[i]].iSeq].y-30,strNum);
//延迟1秒进行下一次排序以便将排序过程显示为动画 Sleep(1000); } } } } |