雞尾酒排序,也叫雙向冒泡排序,是冒泡排序的一個變形。數組
冒泡排序每次都從低到高,一個方向排,雞尾酒排序,從低到高,而後從高到低的排序,會獲得比冒泡排序更好的性能。在亂序數列中,冒泡和雞尾酒排序效率都不理想。性能
因爲雞尾酒排序是雙向的,因此最多須要原來數組的1/2次就能夠了,但有時候不用非要比較到最後,就已經排好序了,後面的排序過程能夠省略,因此引入一個變量記錄是否還有數字交換,若是沒有就提早退出。spa
也能夠每次都將排序的規模減少,由於每一個排序完,首尾都已經排序完成了。code
static void sort(int[] numbers){ int temp; int m=0,n=numbers.length-1; while(m<n){ for(int i=m; i<n;i++){ if(numbers[i]>numbers[i+1]){ //交換數組中兩個數字的位置 temp=numbers[i]; numbers[i]=numbers[i+1]; numbers[i+1]=temp; } } n--; for(int i=n; i>m;i--){ if(numbers[i]<numbers[i-1]){ //交換數組中兩個數字的位置 temp=numbers[i]; numbers[i]=numbers[i-1]; numbers[i-1]=temp; } } m++; } } }