vb 冒泡排序,快救救我吧。我都混乱死了。到底计算机每一步怎么算出来的?
不如对251634这几个书,从大到小和从小到大怎么冒出来的?亲写出全部过程,给100分。在线等从大大小是不是第一次:521634第二次:526134第三次562134第四...
不如 对 2 5 1 6 3 4 这几个书,从大到小 和从小到大怎么冒出来的? 亲写出全部过程,给100分。在线等
从大大小 是不是 第一次:5 2 1 6 3 4 第二次:5 2 6 1 3 4 第三次 5 6 2 1 3 4 第四次 6 4 2 1 3 4? 一次类推?? 请全部写出每一步! 展开
从大大小 是不是 第一次:5 2 1 6 3 4 第二次:5 2 6 1 3 4 第三次 5 6 2 1 3 4 第四次 6 4 2 1 3 4? 一次类推?? 请全部写出每一步! 展开
5个回答
展开全部
计算机冒泡排序法是用两层循环,外循环i=1到5,内循环j=6到i。排序的思路是先把六个中最大的排到第一个,然后把剩下五个中最大的排到第二位,再把剩下四个中最大的排到第三位,以此类推
执行过程如下
第一次外循环,i=1,进入内循环,从第六到第一每次取两个数出来比较,如果大小顺序不对就换位
第一次内循环比较第五个和第六个就是3和4,顺序不正确换位 251643
第二次内循环比较第四个和第五个就是6和4,顺序正确不换位 251643
第三次内循环比较第三个和第四个就是1和6,顺序不正确换位 256143
第四次内循环比较第二个和第三个就是5和6,顺序不正确换位 265314
第五次内循环比较第一个和第二个就是2和6,顺序不正确换位 625341
第一次外循环结束,可以看到最大的6排到了第一位
第二次外循环,i=2,进入内循环,从第六到第二每次取两个数出来比较
第一次内循环比较41,顺序正确不换位 625341
第二次内循环比较34,顺序不正确换位 625431
第三次内循环比较54,顺序正确不换位 625431
第四次内循环比较25,顺序不正确换位 652431
5排到第二位
第三次外循环,i=3,从第六到第三每次取两个数出来比较
第一次内循环比较31,顺序正确不换位 652431
第二次内循环比较43,顺序正确不换位 652431
第三次内循环比较24,顺序不正确换位 654231
第四次外循环,i=4,从第六到第四每次取两个数出来比较
第一次内循环比较23,顺序不正确换位 654321
第二次内循环比较21,顺序正确不换位 654321
第五次外循环,i=4,从第六到第四每次取两个数出来比较
第一次内循环比较21,顺序正确不换位 654321
完毕
执行过程如下
第一次外循环,i=1,进入内循环,从第六到第一每次取两个数出来比较,如果大小顺序不对就换位
第一次内循环比较第五个和第六个就是3和4,顺序不正确换位 251643
第二次内循环比较第四个和第五个就是6和4,顺序正确不换位 251643
第三次内循环比较第三个和第四个就是1和6,顺序不正确换位 256143
第四次内循环比较第二个和第三个就是5和6,顺序不正确换位 265314
第五次内循环比较第一个和第二个就是2和6,顺序不正确换位 625341
第一次外循环结束,可以看到最大的6排到了第一位
第二次外循环,i=2,进入内循环,从第六到第二每次取两个数出来比较
第一次内循环比较41,顺序正确不换位 625341
第二次内循环比较34,顺序不正确换位 625431
第三次内循环比较54,顺序正确不换位 625431
第四次内循环比较25,顺序不正确换位 652431
5排到第二位
第三次外循环,i=3,从第六到第三每次取两个数出来比较
第一次内循环比较31,顺序正确不换位 652431
第二次内循环比较43,顺序正确不换位 652431
第三次内循环比较24,顺序不正确换位 654231
第四次外循环,i=4,从第六到第四每次取两个数出来比较
第一次内循环比较23,顺序不正确换位 654321
第二次内循环比较21,顺序正确不换位 654321
第五次外循环,i=4,从第六到第四每次取两个数出来比较
第一次内循环比较21,顺序正确不换位 654321
完毕
展开全部
Private Sub Command1_Click()
Dim x(1 To 5) As Double, i%, j%, t
x(1) = Val(Text1)
x(2) = Val(Text2)
x(3) = Val(Text3)
x(4) = Val(Text4)
x(5) = Val(Text5)
For i = 1 To 5 - 1 '有5个数要排序,需要进行5-1=4次两两比较
For j = 5 To i + 1 Step -1 '从末尾一个元素到第i个元素进行两两比较
If x(j) < x(j - 1) Then '从小到大排序,若需要从大到小排序,将“<”改为“>”
'若次序不对,则马上交换位置
t = x(j)
x(j) = x(j - 1)
x(j - 1) = t
End If
Next j '除了内循环,一轮排序结束,最小(或最大)数已经冒到数组第一位
Next i
Label1.Caption = x(1)
Label2.Caption = x(2)
Label3.Caption = x(3)
Label4.Caption = x(4)
Label5.Caption = x(5)
End Sub
form:
http://zhidao.baidu.com/question/79336635.html
Dim x(1 To 5) As Double, i%, j%, t
x(1) = Val(Text1)
x(2) = Val(Text2)
x(3) = Val(Text3)
x(4) = Val(Text4)
x(5) = Val(Text5)
For i = 1 To 5 - 1 '有5个数要排序,需要进行5-1=4次两两比较
For j = 5 To i + 1 Step -1 '从末尾一个元素到第i个元素进行两两比较
If x(j) < x(j - 1) Then '从小到大排序,若需要从大到小排序,将“<”改为“>”
'若次序不对,则马上交换位置
t = x(j)
x(j) = x(j - 1)
x(j - 1) = t
End If
Next j '除了内循环,一轮排序结束,最小(或最大)数已经冒到数组第一位
Next i
Label1.Caption = x(1)
Label2.Caption = x(2)
Label3.Caption = x(3)
Label4.Caption = x(4)
Label5.Caption = x(5)
End Sub
form:
http://zhidao.baidu.com/question/79336635.html
追问
不是这样, 我是说怎么冒上来的, 第一次谁和谁交换了, 然后第二次又怎么了,第三次呢? 我不是说让你写过程,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
时间长了,有点忘记了,但是看你过程起来了。冒泡就是每次选择前两数进行比较大小。52没错21没错61违反大小排序。变成你说的第2次,再次重头开始!52没错26有错换位,变成第三次,重来!第4次你写错了是:652134,
5次652314,
6次653214
7次653241,
8次653421
9次654321,
完成!!记住原则,换位后重新开始冒泡!
5次652314,
6次653214
7次653241,
8次653421
9次654321,
完成!!记住原则,换位后重新开始冒泡!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
冒泡是从小到大。。。。
#include "stdio.h"
void main()
{
int a[10],i,j,t;
printf("请输入你要排列的6个数:\n");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(j=0;j<6;j++)
for(i=0;i<5-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
自己试试,就是第一次:1 5 2 6 3 4 第二次:1 2 5 6 3 4 第三次 1 2 3 6 5 4 第四次 1 2 3 5 6 4 第五次:1 2 3 4 6 5 第六次:1 2 3 4 5 6 主要是第二、三个循环判断
#include "stdio.h"
void main()
{
int a[10],i,j,t;
printf("请输入你要排列的6个数:\n");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(j=0;j<6;j++)
for(i=0;i<5-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
自己试试,就是第一次:1 5 2 6 3 4 第二次:1 2 5 6 3 4 第三次 1 2 3 6 5 4 第四次 1 2 3 5 6 4 第五次:1 2 3 4 6 5 第六次:1 2 3 4 5 6 主要是第二、三个循环判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询