选择排序法,冒泡排序的优化

11年前
直接上代码吧:
class xuanze  {   public static void main(String[] args)   {    int[] array = {5,3,6,2,87,8,124,79,0,4,5};    int z = 0;    for (int i = 0; i < array.length - 1; ++i)    {     z = i;     for (int j = i + 1; j < array.length; ++j)     {      if (array[j] < array[z])      {       z = j;      }     }     if (i != z)     {      array[i] += array[z];      array[z] = array[i] - array[z];      array[i] -= array[z];     }    }        for (int x : array)    {     System.out.printf("%4d",x);    }   }  }
选择排序比冒泡排序优化的地方在于交换值的次数上.
两种排序方法中做比较计算的次数都是相同的,为N(N+1)/2次(N是数组长度).
冒泡排序中做值交换的最大次数可能达到N(N+1)/2次.
选择排序中做值交换的最大次数只有N次.
如果N值在很大的时候选择排序比冒泡排序所做的操作就要少很多.