这个程序该怎么理解?

来源:百度知道 编辑:UC知道 时间:2024/06/22 23:41:08
public class ch4ex3 {
public static void main(String [] args) {
int a[]={1,3,5,7,9,2,4,6,8,10};
int t;
for(int i=0;i<a.length;i++){
System.out.println("i="+i);
for(int j=0;j<a.length-i-1;j++){
System.out.println("j="+j);
if(a[j]>a[j+1]){
t=a[j];a[j]=a[j+1];a[j+1]=t;
System.out.println("t="+t);
}
}
}
for(int k=0;k<a.length;k++)
System.out.println("a["+k+"]="+a[k]+"");
System.out.println();
}
}
输出结果是从小到大,我想知道这个程序是怎么理解的

这个是个冒泡排序法。
你看下http://baike.baidu.com/view/254413.htm这个,说得比较清楚。

这是冒泡算法。
冒泡法原理:比较简单的算法,效率也比较低,两两比较相邻的元素,将较小的元素交换到前面。用到两层for循环,当内层循环完成一次后就已经将最小的元素放到了最前面,然后再次循环,直到将整个顺序都排好。
如果楼主打算研究相关排序算法的话,看别人的代码不是好方法,我的方法是首先明白算法的原理,然后自己写代码。
冒泡算法还好,很简单,要是看别人写的快速排序算法的代码,递归实现的,非递归实现的,得看死。

嘿嘿~~这是我用递归写的快速排序的,不知道非递归怎么实现啊~~~
class QuickSort{
public static int[] arrayInt;

public static int[] sort(int[] x){
arrayInt=x;
p(0,x.length-1);
return arrayInt;
}

public static void p(int i,int j){
int temp=arrayInt[i],a=i,b=j;
while(i!=j){
while(arrayInt[j]>=temp){
if(i==j)break;
j--;
}
arrayInt[i]=arrayInt[j];
arrayInt[j]=temp;
while(arrayInt[i]<=temp){
if(i==j)break;
i++;
}
arrayInt[j]=arrayInt[i];
arrayInt[i]=