<?php/** * 雞尾酒排序
* 資料結構----------------陣列
* 最差時間複雜度-----------o(n^2)
* 最優時間複雜度-----------o(n)
* 平均時間複雜度-----------o(n^2)
* 空間複雜度--------------o(1)
* 穩定性-----------------穩定
*/$arr = [1, 3, 34, 2, 32, 2, 78, -43, 53, -35, 0];
function cocktailsort($arr)
} $right--; // 右邊界縮小
for ($i = $right; $i > $left; $i--)
} $left++;// 左邊界增大
print("第".($count+1)."次排序後".join(',',$arr).'
'); }
return $arr;
}$res = (cocktailsort($arr));
echo join(',',$res);
<?php//雞尾酒排序
/** * 雞尾酒排序也就是定向氣泡排序, 雞尾酒攪拌排序, 攪拌排序 (也可以視作選擇排序的一種變形), 漣漪排序, 來回排序 or 快樂小時排序, 是氣泡排序的一種變形。此演演算法與氣泡排序的不同處在於排序時是以雙向在序列中進行排序。
原理:陣列中的數字本是無規律的排放,先找到最小的數字,把他放到第一位,然後找到最大的數字放到最後一位。然後再找到第二小的數字放到第二位,再找到第二大的數字放到倒數第二位。以此類推,直到完成排序。
*/$arr =array_rand(range(1,100),10);
shuffle($arr);
echo join(',',$arr);
function cocktail($arr)
}$right --; //右邊界自減
for($j = $right;$j>$left;$j--)
}$left++;
}return $arr;
}$res = cocktail($arr);
echo "排序後";
echo join(',',$res);
雞尾酒排序
氣泡排序是從陣列的一側到另一側為一輪,根據條件兩兩交換,例如關於氣泡排序中的一組資料3 2 5 4 6 1 8 9 7,優化的氣泡排序在經過六輪之後得到排好的陣列,而雞尾酒排序是一輪次比較兩回 先從左到右比較,如果左邊比右面大,交換位置 然後從右到左比較,左邊比右邊大,交換位置。就用冒泡中的那組數從...
雞尾酒排序
雞尾酒排序是一種定向的氣泡排序,也可以稱為攪拌排序 漣漪排序。是氣泡排序的一種變形。和氣泡排序的區別在於,雞尾酒排序採用了雙向比較並替換的原理。基本原理 第一步 宣告兩個臨時指標left和right,分別指向第乙個元素和最後乙個元素。第二步 每一輪比較時,從right往left方向查詢最大數,放到r...
雞尾酒排序
1.什麼是雞尾酒排序 雞尾酒排序,也稱定向氣泡排序 雙氣泡排序 攪拌排序 漣漪排序 來回排序 快樂小時排序,是氣泡排序的一種變形。2.與氣泡排序的區別 雞尾酒是雙向排序,可以得到較好的排序效能 3.排序過程 舉例 int arr new 第一趟排序 從左到右找到最大值放在最右端 第一次排序 2和4比...