jdk 的demo里面有,demo/applet/SortDemo

解决方案 »

  1.   

    int a[]=new int[5];
    int i=0,j=0,t=0,ti=0;
    for( ;i<5;i++){
        t=a[i];
        for (j=i+1;j<5;j++){
           if (a[j]>t){
              t=a[j];
              ti=j;
           }
        }
        a[i]<-->a[ti];
    }
      

  2.   

    对于冒泡排序,我基本研究过一段时间,那是在学c的时候,但现在也是能很快写出来.最基本的冒泡排序:public class BubbleSort{
    public static void main(String[] args)
    {
    int [] a={12, 8, 9, 6, 10, 3};

    int temp=0;
    for( int i=0; i<= a.length-1; i++)
    {
     System.out.print("\t"+a[i]);
    }
        System.out.println();
        
    //Bubble(a[i]);

    for(int i=0; i<= a.length-1; i++){

    for( int j=0; j>=a.length-2; j-- )//最基本的冒泡排序,注意这里!
    if (a[j]>=a[j+1]){
    temp=a [j];
    a[j]=a[j+1];
    a[j+1]=temp;
    }}

    for( int i=0; i<= a.length-1; i++)
    {
     System.out.print("\t"+a[i]);
     
        }
        
    }
    }
    // Programing with
    public class BubbleSort{
    public static void main(String[] args)
    {
    int [] a={12, 8, 9, 6, 10, 3};

    int temp=0;
    for( int i=0; i<= a.length-1; i++)
    {
     System.out.print("\t"+a[i]);
    }
        System.out.println();
        
    //Bubble(a[i]);

    for(int i=0; i<= a.length-1; i++){

    for( int j=a.length-2; j>=i; j-- )//改进了这里
    if (a[j]>=a[j+1]){
    temp=a [j];
    a[j]=a[j+1];
    a[j+1]=temp;
    }}

    for( int i=0; i<= a.length-1; i++)
    {
     System.out.print("\t"+a[i]);
     
        }
        
    }
    }
      

  3.   

    我原先寫的冒泡排序的編程日記:
    先来看看最基本的数组排序——冒泡排序。比如我们有一个数组为:2,57,29,89,42,34,16,1。通过冒泡——大的沉下去,小的浮上来的原理,分别比较相邻的值,大的往后排。如果相邻的两个值是升序排列的,就保持原样,如果是降序排列的,就交换它们的值:start  : a[0]2, a[1]57, a[2]29, a[3]89, a[4]42, a[5]34, a[6]16,a[7]11 times:2, 29, 57, 42, 34, 16,  1, 892 times: 2, 29, 42, 34, 16,  1, 57, 893 times: 2, 29, 34, 16,  1, 42, 57, 894 times: 2, 29, 16,  1, 34, 42, 57, 895 times: 2, 16,  1, 29, 34, 42, 57, 896 times: 2,  1, 16, 29, 34, 42, 57, 897 times: 1,  2, 16, 29, 34, 42, 57, 89我们可以用两个循环来控制排序,一个控制趟数,一个控制每趟的排序。控制趟数是 1 to 7控制每趟的比较次数也是1 to 7推广一下:有n个项的数组,如果要实行冒泡排序,最多排n-1次,每次比较n-1次。经过我们自己的思考+书上的提示,写下了冒泡排序的源程序: #include <stdio.h>#include <conio.h>#define SIZE 8 main(){    int a[SIZE]={2,57,29,89,42,34,16,1};    int i, pass, hold;     clrscr();    for(i=0;i<=SIZE-1;i++)    printf("%4d", a[i]);    printf("\n");     for(pass=1;pass<=SIZE-1;pass++)  /*比较趟数*/        for(i=0;i<=(SIZE-1-1);i++)/*比较一趟*/        if(a[i]>a[i+1]){        hold=a[i];        a[i]=a[i+1];        a[i+1]=hold;}     for(i=0;i<=SIZE-1;i++)    printf("%4d",a[i]);     return 0;} 根据我们找的关系,比较一趟的时候不应该是SIZE-1吗?!这是考虑到的数组下标的问题,我也没那么弱智把SIZE-2写成SIZE-1-1,是为了增加我们对冒泡排序的理解!比如,当i=6的时候,不是比较了a[6]和a[7]么? 再想想,不这么写,非要写SIZE-1,可以么?我想也差不多吧,但那样很麻烦,就是如何处理数组下标呢?其实我们开始考虑问题的时候就该考虑如何进行比较,我们刚才过重研究了趟数的问题了! 运行结果如:    2  57  29  89  42  34  16   1   1   2  16  29  34  42  57  89 完成了我们排序的目的。 原先学习过一次冒泡排序了,不过那回没有真正地理解,这回是比上次理解得深了,我们看别人得程序不要死记硬背,首先要理解,要不是没有用处的,哪怕象这次一样一行行分析过程呢。7:06 02-6-4  
      

  4.   

    學習JAVA應該用對象传递来编程序了,但把数组做为对象传递我还不熟悉不过java是传值调用,和c传引用不一样