快速排序

发表于:2007-07-01来源:作者:点击数: 标签:
在快速排序对话框上放20个编辑框 和几个按扭。 左边一列的编辑框依次是IDC_EDIT1到IDC_EDIT10,选中第一个编辑框的Group属性。右边一列的编辑框依次是IDC_EDIT11到IDC_EDIT20,选中IDC_EDIT11的Group属性。 void CQuickSortDlg::OnButton2() //随机生成10个数


在快速排序对话框上放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

         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);     

}


原文转自:http://www.ltesting.net