Java和 C#冒泡排序法。 我只是理解。但是不知道怎么写。  循环也会写,就是写不好if条件

解决方案 »

  1.   


    // array of integers to hold values
    private int[] a = new int[100];// number of elements in array
    private int x;// Bubble Sort Algorithm
    public void sortArray()
    {
      int i;
      int j;
      int temp;  for( i = (x - 1); i >= 0; i-- )
      {
        for( j = 1; j <= i; j++ )
        {
          if( a[j-1] > a[j] )
          {
            temp = a[j-1];
            a[j-1] = a[j];
            a[j] = temp;
          }
        }
      }
    }
    代码来自:
    http://www.publicjoe.f9.co.uk/csharp/sort01.html
      

  2.   

    java的http://www.dreamincode.net/code/snippet513.htm
      

  3.   

    private Random rand = new Random(unchecked((int)DateTime.Now.Ticks));private void button1_Click(object sender, System.EventArgs e)
    {
    int i,j,temp;
    int[] a = new int[101];
    for(i = 1;i<=100;i++) a[i] = rand.Next(100);//随机产生100个100以内的整数//先拿第一个依次跟后面的99个比较大小,如果小于则交换值 这样最大的数就放在数组a[1]的位置了
    //再拿第二个依次跟后面的98个比 第二大的数就放在了数组a[2]里 
    //以此类推 一直到第99个跟第100个比完 则排序OK
    for(i=1;i<=99;i++)
      for(j=i+1;j<=100;j++)
        if (a[i]<a[j]) 
         {
           temp = a[i]; 
           a[i] = a[j]; 
           a[j] = temp;
         }//在textBox1显示数组
    string str="";
    for (i=1;i<=100;i++) 
    {
      str += a[i].ToString().PadRight(2,' ') + " "; 
      if (i%10==0) str +="\r\n";
    }
    this.textBox1.Text = str;
    }
      

  4.   


    不会写if条件,就是不会设计了!恐怕你看不懂设计代码.....
    假设针对IList<T>,可以这样写:public static void 冒泡排序<T>(IList<T> array) where T : IComparable<T>
    {
        int k;
        T temp;
        for (int i = 1; i < array.Count; i++)
            for (int j = i; j < array.Count; j++)
            {
                k = j - 1;
                if (array[k].CompareTo(array[j]) > 0)
                {
                    temp = array[k];
                    array[k] = array[j];
                    array[j] = temp;
                }
            }
    }
      

  5.   

    冒泡排序(从左往右,升序排列):
      int[] array=new int[]{5,2,9,4,25,21,18,16,17};
     int i=0,j=0;
     int temp=0;//叫做第三方变量
     for(i=0;i<array.length;i++)
      {
         for(j=0;j<array.length-i-1;j++)
           {
             if(array[j]>array[j+1])
               {
                  temp=array[j];
                 array[j]=array[j+1];
                   array[j+1]=temp;
                }
           }
      }
      

  6.   

    嗯,soory,我看了一下我在#4楼贴的代码,不小心错了一个字母,把1写成j了。修改一下应该是:public static void 冒泡排序<T>(IList<T> array) where T : IComparable<T>
    {
        int k;
        T temp;
        for (int i = 1; i < array.Count; i++)
            for (int j = 1; j < array.Count; j++)
            {
                k = j - 1;
                if (array[k].CompareTo(array[j]) > 0)
                {
                    temp = array[k];
                    array[k] = array[j];
                    array[j] = temp;
                }
            }
    }j=1 而不是 j=i。但是不管这里写什么“冒泡”的含义就是每一次都只是交换相邻的两个元素,绝对不是选择很远的两个元素去交换。首先要保证是这一点,才是冒泡排序的逻辑含义。