选择排序为不稳定排序算法:
其中
if(Min!=num[j]) //这里必须要判断,如果缺少判断,那么当前的最小值就会与之前的最小值位置交换
{
tmp=num[MinPos];
num[MinPos]=num[j];
num[j]=tmp;
}
{
//20131219 Denyz
int i;
int num[8];
CString Output1,szInput[8],OutputTmp;
int k;
int Min,MinPos,j;//j为扫描的趟数
int tmp;//用作交换两个数值的暂存变量
//int num[8]={9,8,7,6,5,4,3,2};
for(i=0;i<8;i++)
{
GetDlgItem(1014+i)->GetWindowText(szInput[i]);
num[i]=atoi(szInput[i]);
}
for(j=0;j<8;j++)
{
Min=num[j];
for(i=j;i<8;i++)//循环比较,找出剩下的元素中的最小值的位置和数值
{
if(Min>num[i])
{
Min=num[i];
MinPos=i;//记录获取到最小值的位置
}
}
//最小值和num[j]数值交换,
if(Min!=num[j])//这里必须要判断,如果缺少判断,那么当前的最小值就会与之前的最小值位置交换
{
tmp=num[MinPos];
num[MinPos]=num[j];
num[j]=tmp;
}
}
#ifdef FALSE
for(i=0;i<8;i++)
k=num[i];
#endif
for(i=0;i<8;i++)
{
OutputTmp.Format("%d ",num[i]);
Output1.Insert(i*2,OutputTmp);
}
GetDlgItem(IDC_EDIT_Output1)->SetWindowText(Output1);
}