JAVA选择排序代码

选择排序算法学习使用代码如下

import untils.AlgorithmUtils;
import java.util.Arrays;

/**
 * 选择排序
 * 

* 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, * 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 * 以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 *

* 平均时间复杂度 最好情况 最坏情况 空间复杂度 * O(n²) O(n²) O(n²) O(1) */ public class Selection { public static int[] studySelectionSort(int[] arr) { System.out.println("数组长度为: " + arr.length); System.out.println("传入的原数组为: " + Arrays.toString(arr)); int len = arr.length; for (int i = 0; i < len; i++) { System.out.println("第" + (i + 1) + "轮排序开始 "); int low = i; for (int j = i + 1; j < len; j++) { if (arr[low] > arr[j]) { low = j; } } AlgorithmUtils.swap(arr, low, i); System.out.println("本轮最小的元素是 " + arr[i]); System.out.println("" + Arrays.toString(arr)); System.out.println("第" + (i + 1) + "轮排序结束 "); } return arr; } }

package untils;

public class AlgorithmUtils {
     

    public static void swap(int[] arr, int a, int b) {
     

        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;

        /* 不常用

        arr[a] = arr[a] + arr[b];
        arr[b] = arr[a] - arr[b];
        arr[a] = arr[a] - arr[b];
        */

    }

}

选择排序算法作为工具类使用代码如下

public class Selection {
     
    
    /**
     * 
     * @param arr  传入数组
     * @return 返回排序后的数组
     */
    public static int[] selectionSort(int[] arr) {
     
        int len = arr.length;
        for (int i = 0; i < len; i++) {
     
            int low = i;
            for (int j = i + 1; j < len; j++) {
     
                if (arr[low] > arr[j]) {
     
                    low = j;
                }
            }
            AlgorithmUtils.swap(arr, low, i);
        }
        return arr;
    }
}

你可能感兴趣的:(算法,算法,数据结构,排序算法,java)