怀念部队 发表于 2014-5-10 01:46:19

关于冒泡排序的问题,理不清思路,谁能帮我解释下

如题。冒泡排序的几个变量不知道是指的什么晕死我了,谁能帮我解释下,,l, j, k, n: Integer;这几个变量



procedure TForm1.Button2Click(Sender: TObject);
var
l, j, k, n: Integer;
begin
For l:=1 to i-1 do
begin
    k:= i - l;
    For j:=1 to k do
    begin
      If (num < num) then
      begin
      n:= num;
      num:= num;
      num:= n;
      end;
    end;
end;

牡丹花下死做鬼 发表于 2014-5-10 02:29:01

C语言的应该看得懂吧 if 和 for 冒泡排序就是那两个循环的嵌套#include<stdio.h>

int main()
{
        int n;
        int i,j,t;
        printf("Please Input ten number:");
        for(i = 0;i<10;i++)//输入10个数字
        {
                scanf("%d",&n);
        }
        for(i = 0;i<10;i++)//冒泡排序
        {
                for(j = i+1;j<10;j++)
                {
                        if(n>n)
                        {
                                t = n;
                                n = n;
                                n = t;
                        }
                }
        }
        for(i = 0;i<10;i++)//输出
        {
                printf("%-5d",n);
        }

        return 0;
}

怀念部队 发表于 2014-5-10 12:18:12

for(j = i+1;j<10;j++)

卡这里了。这个 j 是什么啊?

Stduy_Student 发表于 2014-5-11 12:08:25

什么意思的?

动感超人xx 发表于 2014-5-14 16:52:25

顶~~~~~~~~~~~~~~~~~~~~~~~

fayisan 发表于 2014-5-25 16:54:06

积分测试中。。。。

765643729 发表于 2014-5-26 12:06:56

我不懂你用的语言,不过原理应该差不多
我只会java,代码其实和c差不多,不要在意这小细节拉

public class Test2 {

        public static void main(String[] args) {
                int [] list={9,5,4,2,1,0,7,22,41,11};               //这是要排序的数组
                for(int i=0;i<list.length;i++){                  //这是一个for循环,i就是为了标记外层循环次数
                        for(int j=0;j<list.length-i-1;j++){      //j是为了标记内层循环,
                                if(list<list){                      //list.length-i-1,减一是因为j+1,如果不减会数组越界
                                        int temp=list;                  //temp 临时变量,为了实现交换值
                                        list=list;
                                        list=temp;
                                }
                        }
                }
                for(int i:list){
                        System.out.print(i+",");
                }
        }
}

理解一下冒泡排序的原理就好了
http://pan.baidu.com/s/1ntJm0fn
这是java的冒泡排序教程,原理不管什么语言的差不多,可以看看,千万别去背代码,没p用


puppylove 发表于 2014-5-30 17:13:27

厉害厉害 佩服佩服

长沙hacker 发表于 2014-6-11 17:09:34

很容犯错误

重眉々碎步 发表于 2014-6-20 11:44:07

人品木有,鱼币拿走

1012662902 发表于 2014-6-20 12:41:21

看看顺便顶LZ

lityu_fishc 发表于 2014-6-20 13:23:24

怀念部队 发表于 2014-5-10 12:18 static/image/common/back.gif
for(j = i+1;j

就是每次只和后面的数比较大小!

七月你好 发表于 2014-6-24 10:58:32

强烈支持楼主ing……强烈支持楼主ing……

黄种人 发表于 2014-6-26 16:33:46

路过……:big

New_pythoner 发表于 2014-7-7 22:03:39

很容犯错误

h1006272147 发表于 2014-7-30 09:06:02

怀念部队 发表于 2014-5-10 12:18
for(j = i+1;j

前面的i-1个数已经排完了,
要排第i个数,
所以从第i个数开始,
依次与i后面的数比较,
所以j=i+1指向的就是i后面的数,
比较完之后将最大或者最小的值与第i个交换位置,
然后i=i+1,
重复上面的循环。

KangWei0926 发表于 2014-8-2 21:21:06

鱼币鱼币

5个木头心 发表于 2014-8-12 19:09:43

强烈支持楼主ing……

初学者517 发表于 2014-8-13 08:03:31

支持

doudouba 发表于 2014-8-13 11:06:54

:lol:
页: [1] 2 3 4
查看完整版本: 关于冒泡排序的问题,理不清思路,谁能帮我解释下