<span style="font-size:14px;">冒泡排序:让数组中的数据两两进行比较(第 i 个和第(i+1)个进行比较,经过(N-1)次两两比较得到我们需要的拍好序的数据。</span>
<span style="font-size:14px;">{33,20,10,14,16,11,28}原始个数7个,按照从大到小进行冒泡排序。</span>
<span style="font-size:18px;">第一次比较过程:33和20比较:33>20 <span style="white-space:pre"> </span>不交换位置 <span style="white-space:pre"> </span>→{<span style="background-color: rgb(255, 0, 0);">33,20</span>,10,14,16,11,28};</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>20和10比较:22>10 <span style="white-space:pre"> </span>不交换位置<span style="white-space:pre"> </span>→{33,<span style="background-color: rgb(255, 0, 0);">20,10</span>,14,16,11,28};</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>10和14比较:10<14<span style="white-space:pre"> </span>交换位置<span style="white-space:pre"> </span>→{33,20,<span style="background-color: rgb(255, 0, 0);">14,10</span>,16,11,28};</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>10和16比较:10<16<span style="white-space:pre"> </span>交换位置<span style="white-space:pre"> </span>→{33,20,14,<span style="background-color: rgb(255, 0, 0);">16,10</span>,11,28};</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>10和11比较:10<11<span style="white-space:pre"> </span>交换位置<span style="white-space:pre"> </span>→{33,20,14,16,<span style="background-color: rgb(255, 0, 0);">11,10</span>,28};</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>10和28比较:10<,28<span style="white-space:pre"> </span>交换位置<span style="white-space:pre"> </span>→{33,20,14,16,11,<span style="background-color: rgb(255, 0, 0);">28,10</span>};</span>
<span style="font-size:18px;">第一轮比较结果:{33,20,14,16,11,28,10}; <span style="white-space:pre"> </span>两两比较次数:6次;</span>
<span style="font-family: Arial, Helvetica, sans-serif;">由比较过程可以看出最后一位一定是最小的一位,所以第二次比较可以排除最后一位,只需要比较前6位{33,20,14,16,11,28};</span>
<span style="font-size:18px;">第二轮比较结果:{33,20,16,14,28,11,10}; <span style="white-space:pre"> </span>两两比较次数:5次;</span>
<span style="font-size:18px;">第三轮比较结果:{33,20,16,28,14,11,10};<span style="white-space:pre"> </span>两两比较次数:4次;</span>
<span style="font-size:18px;">第四轮比较结果:{33,20,28,16,14,11,10};<span style="white-space:pre"> </span>两两比较次数:3次;</span>
<span style="font-size:18px;">第五轮比较结果:{33,20,28,16,14,11,10};<span style="white-space:pre"> </span>两两比较次数:2次;</span>
<span style="font-size:18px;">第六轮比较结果:{33,20,28,16,14,11,10};<span style="white-space:pre"> </span>两两比较次数:1次;</span>
<strong><span style="font-size:18px;color:#ff0000;">由上面可以看出两两比较的次数会随着比较轮数已(比较次数 = 原始个数 - 比较轮数)的规律减少,比较的轮数 = 原始个数 -1;</span></strong>
<strong><span style="font-size:18px;color:#ff0000;">这样我们就可以推出:当数组长度为 N 时与比较的轮数 M 的关系为:M=N-1;</span></strong>
<strong><span style="font-size:18px;color:#ff0000;"><span style="white-space:pre"> </span> 比较轮数M和两两比较次数 K 的关系为:K=N-M;</span></strong>
我们已经分析出来了数组长度和比较轮数,两两比较次数之间的关系,试着将这些关系用代码表示出来;
首先是数组长度为 N 时与比较的轮数 M :M=N-1 的关系的转换;
<span style="font-size:24px;">for (int M = 0; M < N.Length-1; M++) </span>
<span style="font-size:24px;">{ </span>
<span style="font-size:24px;"><span style="white-space:pre"> </span><span style="color:#ff0000;">比较轮数M和两两比较次数 K 的关系为:K=N-M;</span></span>
<span style="font-size:24px;"><span style="color:#ff0000;"><span style="white-space: pre;"> </span>因为程序里面M=0表示第一轮循环,所以:K=N-M-1;</span>
</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>for (int k = 0; k < N.Length-M-1; k++)
{
<span style="color:#ff0000;">在里面将相邻的值进行比较,然后调换位置。</span></span>
<span style="font-size:24px;color:#ff0000;"><span style="white-space:pre"> </span> 从小到大排序用 > 符号;</span>
<span style="font-size:24px;color:#ff0000;"><span style="white-space:pre"> </span> 从大到小排序用 < 符号。</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>if(N[K]<N[K+1])</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>{</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>N[K]=N[k]+N[K+1];</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>N[K+1]=N[K]-N[K+1];</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>N[K]=N[K]-N[K+1];</span>
<span style="font-size:24px;"><span style="white-space:pre"> </span>}
}</span>
<span style="font-size:24px;">}</span>
这样冒泡排序的结构已经出来了。