关于VB 的冒泡排序法 ,急

作者&投稿:子石 (若有异议请与网页底部的电邮联系)
关于C语言冒泡排序法的问题~

改好了:
#include "stdio.h"
#include "stdlib.h"
void PrintArray(int a[],int n) //输出排序每一步的结果
{
int i;
for(i=0;i<n;i++) //通过循环输出元素
printf("%4d",a[i]);
printf("
");
}
void BubbleSort(int a[],int n) //冒泡排序函数
{
int i,j,tmp; //tmp为中间变量
int flag; //标志变量,如果为0,说明不再交换顺序,排序结束
int count=0; //记录交换次数
printf("initial sorting:");
PrintArray(a,n); //输出排序前的序列
for(i=0;i<n;i++)
{
flag=0; //初始值为0
for(j=i+1;j<n;j++)
{if(a[i]>a[j]) //如果前面的数比后面的数大,进行交换
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1; //如果发生交换,标识变量设为1
}
}
count++; //记录已经发生的排序次数
printf("after %d sorting:",count);
PrintArray(a,n); //输出第count次的排序结果
if(flag==0) //没进行一次排序,flag都清0,若交换再发生,则排序完成
{
return;
}
}
}
void main() //主函数
{
int *a,n=5,i=0;
a=(int *)malloc(n*sizeof(int)); //为5个待排序的整型数开辟储存空间
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入待排序数
BubbleSort(a,n); //调用排序函数进行排序
free(a); //排序结束,释放储存空间
}

1.if a(j)<a(j+1)then中 满足是没错 如果a(j+1)不超过数组的上维 不引发错误的话
2。CStr(a(i)) 是将a(i)内容转换为字符类型 然后用+号 和text1.text 做字符串连接

你的a数组没有定义下标 ^_^

解决方案:

  1. 直接限定下标范围

    Dim a(1 to 5) As Integer

    Dim a(6) As Integer        '这里要写6,默认数组下标从0开始

  2. 使用动态数组的定义

    Dim a() As Integer

    Redim a(6)                     '这里要写6,默认数组下标从0开始


还有就是数组的输出问题了。输出数组只能一个一个输出其中的数据,例如Print a(1),Print a(2),Print a(i) 皆可。

望采纳~



1、这个首先是“下标越界”吧,可以Dim a(5)as Integer

需要注意的是:你只用了5个元素,你没用Option Base 1,所以下标从0开始的。

2、其次是“类型不匹配”,数组的输出要采用如下形式:

For i = 1 To UBound(a) 
    Print a(i),  
Next i


括号里得有索引,你直接这样,VB不知道你究竟想输出哪个数组成员,因此 让然报错


历城区17694007173: vb中冒泡排序法详解 -
卢政人参: 书上讲的是不容易理解我来给你说下比如 3,1,2,5,6,4 为例首先把数按顺序赋给数组 a(1~6) 不难吧然后给你提一点冒泡法最后一个数会确定下来第一个数,来下面:从大到小排: 1.for i = 1 to 6 2. for j=i to 6-i 3. if a(j)

历城区17694007173: vb冒泡法排序步骤 -
卢政人参: dim A(10) as integer dim I,J as integer dim temp as integer '临时交换用 '初始化随机函数 randmize '取10个随机数(范围100以内)并存放到数组中 for I=0 to 9A(I)=Int(Rnd*100) next I '开始冒泡排序 for I=0 to 8for J=I+1 to 9'冒泡原理(大的数下沉,小的数上浮)即(如果前面的大于后面的数,两者交换)if A(I)>A(J) then temp=A(I):A(I)=A(J):A(J)=tempnext J next I

历城区17694007173: 用VB编一个 冒泡排序 -
卢政人参: Private Sub Command1_Click() Dim a(1 To 100) As Integer, t As Integer Dim i As Integer, j As Integer Dim Min As Integer Randomize For i = 1 To 100 a(i) = Rnd() * 1000 Next For i = 1 To 100 Text1.Text = Text1.Text & "," & a(i) Next '***********起...

历城区17694007173: VB里冒泡排序法是怎么回事?麻烦举一个典型例子 -
卢政人参: 就是比较数值,把大的或小的放在前面 比如,有一个数组a()包含{5,7,3,9,12,15,56}7个数 dim t as integer for i=0 to a.count-1 for j=i+1 to a.count-1 t=a(i) if a(i) a(i)=a(j) a(j)=t next next 这时比较排序法 下面是冒泡排序 Private Sub Form_Load() ...

历城区17694007173: VB 冒泡法排序 -
卢政人参: Private Sub Command1_Click() Dim a!(4), i& For i = 0 To 4 a(i) = inputbox("输入第" i+1 & "个数") Print a(i); Next Print Func a, 0 For i = 0 To 4 Print a(i); Next End Sub'冒泡排序 Sub Func(a!(), F&) Dim b!, c!, i& Dim flg As Boolean flg = ...

历城区17694007173: vb怎么按“冒泡排序”按钮实现从小到大排序,并输出在个文本框中 -
卢政人参: 123456789 Fori = 1 To10Forj = 1 To10 - iIfa(j) > a(j + 1) Then temp = a(j + 1) a(j + 1) = a(j) a(j) = temp EndIf Nextj Nexti 上面是冒泡排序法

历城区17694007173: VB冒泡排序算法
卢政人参: private sub form_click() dim temp as integer dim a(1 to 10) as integer for i=1 to 10 a(i)=inputbox("请输入") next i for i=10 to 2 step -1 for j=1 to i -1 if a(j)>a(j+1) then temp=a(j+1) a(j+1)=a(j) a(j)=temp end if next j next i print "经过冒泡排序,得出结...

历城区17694007173: 急!怎样用VB程序来表示冒泡排序(从1排到10)? -
卢政人参: 在VB中演示过程冒泡法排序 要求把代码输入后能直接在VB环境中运行 在窗体中添加三个标签,一个按钮,一个框架在框架中添加一个文本框 Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode57 And KeyCode150 ...

历城区17694007173: VB的简单冒泡排序 -
卢政人参: 原因有二,一是你没把变量赋值(因此输出全是0),二是你的程序有些错误,应该是a(i)而不是a(1). 下面为修改后的程序.Private Sub Command1_Click() Dim a(30) As Integer Dim i, j, tem As Integer Const n = 30 '给a(i)赋值 For i = 1 To n a(i...

历城区17694007173: 关于VB一维数组的冒泡排序法 -
卢政人参: for i=1 to 9 for j=i+1 to 10 '将j的值加1 if a(i)>a(j) then '如果a(i)比a(j)的值大,则进行下面代码 t=a(i):a(i)=a(j):a(j)=t '将a(i)的值赋给t,将a(j)赋给a(i),最后将t的值赋给a(j)最后一句的意思就是比较a(i)与a(j)的大小,如果a(i)比a(j)大,则将a(j)的值赋给a(i),再将a(i)的值赋给a(j),相当于执行一次交换,这就是“冒泡”算法当然,最后再用print语句输出,即可排列出所有的元素顺便说一句,“:”的作用就是可以在一行执行多条语句,在执行多条类似的语句可以用":",来分割每条单独的语句

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网