📄 csdn技术中心 用vc线程模拟实现并行算法.htm
字号:
class=txt><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: Arial">A(1)</SPAN></SPAN><SPAN
class=txt><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中。</SPAN></SPAN><SPAN
class=txt><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 15pt"><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: Arial">Begin<BR>For k=m-1 to 0
do <BR><SPAN style="mso-spacerun: yes"> </SPAN>For
j=2<SUP>k+1</SUP>-1 to 2<SUP>k</SUP> par do<BR><SPAN
style="mso-spacerun: yes">
</SPAN>A(j)=max(A(2j)</SPAN><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">,</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: Arial">A(2j+1))<BR><SPAN
style="mso-spacerun: yes"> </SPAN>End For<BR>End
For<BR>End</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 15pt"><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: Arial">具体实现:<SPAN
class=txt><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt"><FONT size=3><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> 定义全局变量如下,</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array</SPAN><FONT face=宋体><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">用于存放产生的随机数。</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: Arial"><o:p></o:p></SPAN></FONT></FONT></P>
<TABLE
style="BACKGROUND: white; WIDTH: 100%; mso-cellspacing: 1.5pt; mso-padding-alt: 0cm 0cm 0cm 0cm"
cellPadding=0 width="100%" bgColor=white border=0>
<TBODY>
<TR>
<TD
style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: Arial">int
g_nCount=0,j=0;<BR>int
*array;<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P style="LINE-HEIGHT: 15pt"><FONT size=3><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> 随机产生</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">n</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>个数并存于数组</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array</SPAN><FONT face=宋体><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中,程序代码如下:</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: Arial"><o:p></o:p></SPAN></FONT></FONT></P>
<TABLE
style="BACKGROUND: white; WIDTH: 100%; mso-cellspacing: 1.5pt; mso-padding-alt: 0cm 0cm 0cm 0cm"
cellPadding=0 width="100%" bgColor=white border=0>
<TBODY>
<TR>
<TD
style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<P style="LINE-HEIGHT: 15pt"><SPAN lang=EN-US
style="FONT-FAMILY: Arial">void CDemoDlg::OnBtnInitial()
<BR>{<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">// </SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>初始化数组</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial"><BR><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">srand((unsigned)time(NULL));<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">int i,temp;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">CString str;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">UpdateData(true);<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">g_nCount=pow(2,m_intCount);<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array=new
int[2*g_nCount];<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">//</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>根据用户的输入,产生</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">2</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>的</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">m</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>次方的随机数并存于</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array[n]</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>…</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">a[2n-1]</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>中</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial"><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">for(i=g_nCount;i<2*g_nCount;i++)<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">{<BR><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">temp=rand()/100;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array[i]=temp;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">}<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">//</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>显示产生的</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">n</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>个随机数</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial"><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">for(i=g_nCount;i<2*g_nCount;i++)<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">{<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">str.Format("Array[%d]=
%d",i,array[i]);<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">m_strArray+="\r\n";<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">m_strArray+= str;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">m_strArray+="\r\n";<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">}<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">m_strArray+="\r\n";<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">UpdateData(false);<BR><BR>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 15pt"><SPAN lang=EN-US
style="FONT-FAMILY: Arial">void CDemoDlg::OnBtnCompute()
<BR>{<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">// </SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>启动线程进行计算</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial"><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">int k;<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">for(k=m_intCount-1;k>=0;k--)<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">{<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">for(j=pow(2,k);j<POW(2,K+1);J++)<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">{<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">AfxBeginThread(ComputeThread,GetSafeHwnd(),<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">THREAD_PRIORITY_NORMAL);<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">}<BR><BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">}<BR></SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体> </FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">//</SPAN><SPAN
style="mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><FONT
face=宋体>线程体:较</FONT></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: Arial">array[2j]</SPAN><SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -