关于冒泡排序的问题,理不清思路,谁能帮我解释下
如题。冒泡排序的几个变量不知道是指的什么晕死我了,谁能帮我解释下,,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;
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;
} for(j = i+1;j<10;j++)
卡这里了。这个 j 是什么啊? 什么意思的? 顶~~~~~~~~~~~~~~~~~~~~~~~ 积分测试中。。。。 我不懂你用的语言,不过原理应该差不多
我只会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用
厉害厉害 佩服佩服 很容犯错误 人品木有,鱼币拿走 看看顺便顶LZ 怀念部队 发表于 2014-5-10 12:18 static/image/common/back.gif
for(j = i+1;j
就是每次只和后面的数比较大小!
强烈支持楼主ing……强烈支持楼主ing…… 路过……:big 很容犯错误 怀念部队 发表于 2014-5-10 12:18
for(j = i+1;j
前面的i-1个数已经排完了,
要排第i个数,
所以从第i个数开始,
依次与i后面的数比较,
所以j=i+1指向的就是i后面的数,
比较完之后将最大或者最小的值与第i个交换位置,
然后i=i+1,
重复上面的循环。 鱼币鱼币 强烈支持楼主ing…… 支持 :lol: