Đang tải…
Đang tải…
Bubble sort hai chiều: mỗi vòng đẩy phần tử lớn nhất sang phải rồi nhỏ nhất sang trái, thu hẹp dần từ hai đầu.
Bắt đầu cocktail shaker sort.
1void cocktailSort(int[] arr) {2 int left = 0, right = arr.length - 1;3 while (left < right) { // thu hẹp từ hai đầu4 for (int i = left; i < right; i++) // lượt đi tới5 if (arr[i] > arr[i+1]) swap(arr, i, i+1); // đẩy số lớn sang phải6 right--; // lớn nhất đã ở phải7 for (int i = right; i > left; i--) // lượt đi lui8 if (arr[i-1] > arr[i]) swap(arr, i-1, i); // đẩy số nhỏ sang trái9 left++; // nhỏ nhất đã ở trái10 }11}12 13void swap(int[] arr, int i, int j) {14 int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;15}