非排序寻找从小到大第3400个数

来源:互联网 发布:新华软件学校 编辑:程序博客网 时间:2024/05/16 01:10

题目:有10000个正整数,每个数的取值范围均在1到1000之间,变成找出从小到大排在第 3400(从0开始算起)的那个数,将此数的值返回,要求不使用排序实现。


vs2013 MFC 工程资源 : http://download.csdn.net/detail/keith_cheung/9153899


void CMfcSortDlg::OnBnClickedButtonResult(){// TODO:  在此添加控件通知处理程序代码int iRand[10000];int i;CString sTemp;m_SEditRand = "";srand( (unsigned int) ( time(NULL) ));for (i = 0; i < 10000; i++){iRand[i] = (int) ((double)rand() * 999 / (RAND_MAX + 1) + 1);sTemp.Format(L"%d\r\n", iRand[i]);m_SEditRand += sTemp;}int iSort[10001] = { 0 };for (i = 0; i < 10000; i++){iSort[iRand[i]]++;}int iAdd = 0;for (i = 1; i <= 10000; i++){if (iAdd < 3401){iAdd += iSort[i];}else{m_iEditResult = i - 1;break;}}UpdateData(FALSE);}

0 0
原创粉丝点击