分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
像是攪拌依一樣,由最左再往最右邊,並且依照以下規則
1. 往右時,將最大值放到最右邊,並且最右上限-1
2. 然後再往左,將最小值放到最左邊,並且最左上限+1
3. 重複1、2直到左與右相重疊時,表示跑完
最後排序將會由小至大
初始內有5個值,依序左、右、左、右、完成排序
輸入一組數列 inputItem 求出 result
public void Execute()
{
List<int> inputItem = new() { 92, 17, 38, 59, 26, 39 };
var cocktailSort = new CocktailSort<int>();
var result = cocktailSort.CocktailAscsendingSorting(inputItem);
}
主要四個流程
1. 輸入一組比較陣列Array[]
2. 由陣列最左邊元素取最大值放置最右邊
3. 由陣列最右邊元素取最小值放置最左邊
4. 直到到中心點,結束排序
public class CocktailSort<T> where T : IComparable
{
public List<T> CocktailAscsendingSorting(List<T> items)
{
int right = items.Count - 1;
int left = 0;
T temp;
while (left < right)
{
//往右 - 取大
for (int index = left; index < right; index++)
{
if (items[index].CompareTo(items[index + 1]) > 0)
{
temp = items[index];
items[index] = items[index + 1];
items[index + 1] = temp;
}
}
right--;
//往左 - 取小
for (int index = right; index > left; index--)
{
if (items[index].CompareTo(items[index - 1]) < 0)
{
temp = items[index];
items[index] = items[index - 1];
items[index - 1] = temp;
}
}
left++;
}
return items;
}
}