选择排序 - 直接选择排序

    直接选择排序思路很简单,就是不停的拿当前假设的最小值与后面的元素对比,如果对比值更小,就交换位置。它需要经过N-1趟比较。

    

    每轮都会将本轮最小值放在最前面,直至游标移动至最后一位。


package com.h3c.paixu;

public class 直接排序Demo {

	public static void main(String[] args) {
		// 1. 初始化一个无序数组
		int[] myArr = { 23, 35, 73, 27, 4, 77, 54, 84, 47, 56, 34, 32, 75, 32,
				31, 0, 99, 7, 54, 57 };

		for (int k = 0; k < myArr.length - 1; k++) {
			myArr = 直接排序(k, myArr);

			for (int i : myArr) {
				System.out.print(i + " ");
			}
			System.out.println("");
		}
	}

	/**
	 * 把最小的元素提前
	 * 
	 * @param startIndex
	 * @param arr
	 * @return
	 */
	public static int[] 直接排序(int startIndex, int[] arr) {
		// 临时交换的元素
		int tempValue = arr[startIndex];

		// 交换用的临时变量
		for (int n = startIndex + 1; n < arr.length; n++) {
			if (arr[startIndex] > arr[n]) {
				arr[startIndex] = arr[n];
				arr[n] = tempValue;
				tempValue = arr[startIndex];
			}
		}
		return arr;
	}
}

时间效率为O(n^2),空间效率为O(1),直接选择排序是不稳定排序。

你可能感兴趣的:(选择排序 - 直接选择排序)