Java 4种方法实现选择排序算法

说明:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

如图:
Java 4种方法实现选择排序算法_第1张图片

代码:

/**
 * @描述 数组排序
 * @项目名称 Java_DataStruct
 * @包名 com.struct.array
 * @类名 ArraySort
 * @author chenlin
 * @date 2010年6月22日 下午8:28:46
 */

public class SelectSort {

    /**
     * 相邻的两个值对比
     * 
     * @param arr
     */
    public static void selectSort1(long[] arr) {
        for (int i = 0; i < arr.length - 1; i++) { // 最多做n-1趟排序
            for (int j = i; j < arr.length; j++) { //每次取i中的数值与i后面的数值比较 
                if (arr[i] > arr[j]) { 
                    arr[i] = arr[i] ^ arr[j];
                    arr[j] = arr[i] ^ arr[j];
                    arr[i] = arr[i] ^ arr[j];
                }
            }
        }

        list(arr);
    }

    /**
     * 相邻的两个值对比
     * 
     * @param arr
     */
    public static void selectSort2(long[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    arr[i] = arr[i] + arr[j];
                    arr[j] = arr[i] - arr[j];
                    arr[i] = arr[i] - arr[j];
                }
            }
        }
        list(arr);
    }

    /**
     * 相邻的两个值对比
     * 
     * @param arr
     */
    public static void selectSort3(long[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    long temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        list(arr);
    }

    /**
     * 相邻的两个值对比
     * 
     * @param arr
     */
    public static void selectSort4(long[] arr) {
        long temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            int min = i; /* 将当前下标定义为最小值下标 */  
            for (int j = i + 1; j < arr.length; j ++) {
                if (arr[j] < arr[min]) {/* 如果有小于当前最小值的关键字 */  
                    min = j; /* 将此关键字的下标赋值给min */  
                }
            }
            if (i != min) {/* 若min不等于i,说明找到最小值,交换 */  
                temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
        list(arr);
    }

    public static void list(long[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "  ");
        }
        System.out.println("");
    }

    public static void main(String[] args) {
        long arr[] = { 22, 33, 44, 11, 23, 43, 54, 0, 98 };
        selectSort1(arr);
    }
}

你可能感兴趣的:(Java-数据结构)