简单选择排序算法JAVA实现

简单选择排序的过程为:第1次,从n个记录中找出关键码最小的记录与第1个记录交换,第2次,,从第2个记录开始的n-1个记录中再选出关键码最小的记录与第2个记录交换;如此,第i次,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i个记录交换,直到整个序列按关键码有序。

例:3,1,4,2

第1次·:13,4,2

第2次:1,2,4,3

第3次:1,2,34

 

  • 时间复杂度:O(n2)
  • 空间复杂度:O(1)
  • 稳定性:不稳定
  • 复杂性:简单
public class SimpleSelectSort {
	public void selectionSort(int[] arr) {
		// 需要遍历获得最小值的次数
		// 要注意一点,当要排序 N 个数,已经经过 N-1 次遍历后,已经是有序数列
		for (int i = 0; i < arr.length - 1; i++) {
			int min = i; // 用来保存最小值得索引
			// 寻找第i个小的数值
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[min] > arr[j])
					min = j;
			}

			// 若min有变化,就将找到的第i个小的数值与第i个位置上的数值交换
			if (min != i) {
				int temp = arr[min];
				arr[min] = arr[i];
				arr[i] = temp;
			}
		}
	}
}

 测试代码

public class Test {
	public static void main(String[] args) {
		int[] a = { 10, 7, 3, 5, 9, 1, 6, 8, 2, 4 };
		System.out.println("排序前:" + Arrays.toString(a));
		SimpleSelectSort simpleSelectSort = new SimpleSelectSort();
		simpleSelectSort.selectionSort(a);
		System.out.println("简单选择排序后:" + Arrays.toString(a));
	}
}

运行结果

你可能感兴趣的:(数据结构与算法)