Nhiều ví dụ trên web về Sắp xếp nhanh (trong Java) là như thế này:Sắp xếp nhanh - Lý do cho bằng kiểm tra
private void quicksort(int low, int high) {
int i = low, j = high;
int pivot = numbers[low + (high-low)/2];
while (i <= j) {
while (numbers[i] < pivot) {
i++;
}
while (numbers[j] > pivot) {
j--;
}
if (i <= j) {
exchange(i, j);
i++;
j--;
}
}
if (low < j)
quicksort(low, j);
if (i < high)
quicksort(i, high);
}
Điều tôi hoang mang về là lý do tại sao có những người bằng kiểm tra:
1) while (i <= j)
thay vì while (i < j)
2) if (i <= j)
thay vì if (i < j)
Có bất kỳ trường hợp cạnh nào mà bằng này là quan trọng không? Từ sự hiểu biết của tôi nếu chúng ta có if(i == j)
, thì về cơ bản chúng ta sẽ trao đổi cùng một giá trị với cùng một giá trị.
Bất kỳ ai cũng có thể giải quyết câu đố đó cho tôi?
Bạn có thể đăng liên kết của một trong những nguồn trực tuyến có mã như thế này không? Tôi nghĩ rằng bạn đúng rằng nó là khá vô nghĩa để trao đổi với một yếu tố chính nó – shole
Đoạn từ trên thực tế đến từ blog vogella. – Lucas