下载本文所附源代码
在快速排序对话框上放20个编辑框 和几个按扭。 左边一列的编辑框依次是IDC_EDIT1到IDC_EDIT10,选中第一个编辑框的Group属性。右边一列的编辑框依次是IDC_EDIT11到IDC_EDIT20,选中IDC_EDIT11的Group属性。
|
void CQuickSortDlg::OnButton2() //随机生成10个数,显示在左边的编辑框中
{
srand((unsigned)time(NULL)); //初始化随机函数发生器
CString s;
for(int i=0;i<10;i++)
{
s.Format("%d",rand()%1000);
SetDlgItemText(IDC_EDIT1+i , s) ; //将数字转为字符串后显示在编辑框
}
m_clear.EnableWindow(true); //m_clear是”清空数据”按扭所联系的变量
} |
为CQuickSortDlg添加快速排序函数:quick_sort()
|
void CQuickSortDlg::quick_sort(int x[], int low, int high) //快速排序函数的实现过程
{
int i=low, j=high; int t=x[low];
while (i
{
while (it) j--;
x[i]=x[j];
while (i i++;
x[j]=x[i];
x[i] = t;
quick_sort(x,low,i-1); //递归调用此函数
quick_sort(x,i+1,high);
}
}
|
|
void CQuickSortDlg::OnSort() //”快速排序按扭的消息处理函数”
{
int x[10]; CString s;
for(int i=0;i<10;i++)
{
GetDlgItem(IDC_EDIT1+i)->GetWindowText(s);
x[i+1]= atoi(s); //将编辑框中的字符转化为数字后对应的赋给包含10个元素的数组
}
quick_sort(x,1,10); //调用快速排序函数,对数组的元素排序
for(i=0;i<10;i++)
{
s.Format("%d",x[i+1]);
GetDlgItem(IDC_EDIT11+i)->SetWindowText(s);
} //将排序后的数组元素赋给右边的编辑框
m_clear.EnableWindow(TRUE); //启用”清空数据”按扭
}
|
|
void CQuickSortDlg::OnClear() //清空所有编辑框中的数字
{
for(int i=0;i<10;i++)
{
GetDlgItem(IDC_EDIT1+i)->SetWindowText("");
//或者 GetDlgItemText(IDC_EDIT1+i, "");
GetDlgItem(IDC_EDIT11+i)->SetWindowText("");
}
m_clear.EnableWindow(false);
} | |