Thứ Tư, 9 tháng 4, 2014

Selection Sort

Danh Mục:

Selection Sort
1. Chọn một phần từ lớn nhất trong n phần tử: a[0], a[1], ..., a[n-1], sau đó hoán vị với phần tử a[0].
2. Chọn phần tử lớn nhất trong n - 1 phần tử từ: a[1], a[2], ..., a[n-1], sau đó hoán vị với phẩn tử a[1].
3. Tổng quát: Ta thấy ở lần thứ i, ta sẽ tìm phần tử lớn nhất trong n - i phần tử từ: a, a[i+1],...,a[n-1], sau đó hoán vị no với a.


Ta có chương trình minh họa:



public class SelectionSort {

    // Sort by descending
    public static void sort(int[] array) {

        for (int i = 0; i < array.length; i++) {
            int max = array[i]; // Lưu phần tử lớn nhất
            int index = i; // lưu vị trí chứa phần tử lớn nhất
            for (int j = i + 1; j < array.length; j++) {
                if(max < array[j]){
                    max = array[j];
                    index = j;
                }
            }
            // Nếu chỉ số đã thay đổi, ta sẽ hoán vị
            if(index != i){
                int temp = array[i];
                array[i] = array[index];
                array[index] = temp;
            }
        }

    }
}
 

0 nhận xét:

Đăng nhận xét