在快速排序对话框上放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 (i x[i]=x[j]; while (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); } |