#region 冒泡演算法運作如下
//比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
//對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
//針對所有的元素重複以上的步驟,除了最後乙個。
//持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
///
/// 氣泡排序(bubble sort) — o(n2) 從小到大
///
///
///
public static int bubblesortaes(int intarr)
}//將小值賦到小的下標處
if (flag)
}return intarr;
}///
/// 氣泡排序(bubble sort) — o(n2) 從大到小
///
///
///
public static int bubblesortdesc(int intarr)
}//將大值賦到小的下標處
if (flag)
}return intarr;
}#endregion
#region 雞尾酒演算法運作如下
//雞尾酒排序,也就是定向氣泡排序, 雞尾酒攪拌排序, 攪拌排序 (也可以視作選擇排序的一種變形), 漣漪排序, 來回排序 or 快樂小時排序, 是氣泡排序的一種變形。
//此演算法與氣泡排序的不同處在於排序時是以雙向在序列中進行排序。
//雞尾酒排序等於是氣泡排序的輕微變形。不同的地方在於從低到高然後從高到低,而氣泡排序則僅從低到高去比較序列裡的每個元素。
//他可以得到比氣泡排序稍微好一點的效能,原因是氣泡排序只從乙個方向進行比對(由低到高),每次迴圈只移動乙個專案。
///
/// 雞尾酒排序 (cocktail sort, 雙向的氣泡排序) — o(n2) 從小到大
///
///
///
public static int cocktailsortaes(int intarr)
}bottom = bottom - 1;
for (int j = bottom; j > top; j = j - 1)//從下向上
}top = top + 1;
}return intarr;
}///
/// 雞尾酒排序 (cocktail sort, 雙向的氣泡排序) — o(n2) 從大到小
///
///
///
public static int cocktailsortdesc(int intarr)
}bottom = bottom - 1;
for (int j = bottom; j > top; j = j - 1)//從下向上
}top = top + 1;
}return intarr;
}#endregion
#region 插入排序運作如下
//1、從第乙個元素開始,該元素可以認為已經被排序
//2、取出下乙個元素,在已經排序的元素序列中從後向前掃瞄
//3、如果該元素(已排序)大於新元素,將該元素移到下一位置
//4、重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
//5、將新元素插入到該位置中
//6、重複步驟2
///
/// 插入排序 (insertion sort)— o(n2) 從小到大
///
///
///
public static int insertionsortaes(int intarr)
intarr[j] = temp;
}return intarr;
}///
/// 插入排序 (insertion sort)— o(n2) 從大到小
///
///
///
public static int insertionsortdesc(int intarr)
intarr[j] = temp;
}return intarr;
}#endregion
雞尾酒演算法排序
一 什麼時雞尾酒排序?雞尾酒排序又稱為快樂小時排序,它基於氣泡排序進行的優化方案。二 雞尾酒演算法思想 氣泡排序是元素單向比較,而雞尾酒排序卻是雙向。列舉乙個最簡單的栗子array 2,3,4,5,6,7,8,9,1 如果按照傳統的氣泡排序進行操作,第一輪結果 2,3,4,5,6,7,8,1,9 只...
排序演算法 雞尾酒排序
雞尾酒排序是一種在氣泡排序的基礎上進行改進的演算法。和氣泡排序的從陣列的一端乙個個排序到另一端的單方向的順序不同,雞尾酒排序的元素比較和交換的雙向的。雙向是什麼意思呢?就是說,對於雞尾酒排序,第一輪從左到右進行排序,這裡和氣泡排序一模一樣,但是第二輪就不一樣了,此時需要的是從右到左,換個方向進行排序...
氣泡排序 雞尾酒排序
include 交換函式 void swap int a,int i,int j 列印陣列 void printa int a,int len printf n 氣泡排序 int main1 int len sizeof a sizeof a 0 int i,j 外層迴圈控制輪數,每一輪找出乙個最大...