【排序算法】雞尾酒排序白話講解

雞尾酒排序(定向冒泡排序)

  雞尾酒排序,也叫定向冒泡排序,是對冒泡排序的一種改進。

  此算法與冒泡排序的不同處在於從低到高然後從高到低,而冒泡排序則僅從低到高去比較序列裏的每個元素。

  他可以得到比冒泡排序稍微好一點的效能。

排序過程:

在這裏插入圖片描述
  1.先對數組從左到右進行冒泡排序(升序),則最大的元素去到最右端

  2.再對數組從右到左進行冒泡排序(降序),則最小的元素去到最左端

  3.以此類推,依次改變冒泡的方向,並不斷縮小未排序元素的範圍,直到最後一個元素結束

代碼~

void Swap(int A[], int i, int j)
{
	int temp = A[i];
	A[i] = A[j];
	A[j] = temp;
}
void cocktail_sort(int arr[], int len) {
	int left = 0;// 初始化邊界
	int right = n - 1;
	while (left < right) {
		for (i = left; i < right; i++) {
			if (arr[i] > arr[i + 1]) {
				Swap(A, i, i + 1);
			}
			right--;
		}
		for (i = right; i > left; i--) {
			if (arr[i - 1] > arr[i]) {
 				Swap(A, i - 1, i);
			}
			left++;
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章