简单选择排序
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换,然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较位置。
(2)实例:
(3)代码实现:
1234567891011121314151617181920212223242526272829303132 |
/** * 简单选择排序 */ private static <AnyType extends Comparable<? super AnyType>> void selectedSort(AnyType[] arr) { System.out.println("原数组为: " + Arrays.toString(arr)); boolean exchange = true; for (int i = 0; i < arr.length && exchange; ++i) { exchange = false; AnyType min = arr[i]; // 把当前值放在一个临时变量里面,后面的数只要比它小就替换 int minIndex = i; // 当前最小数的索引值 for (int j = i+1; j < arr.length; ++j) { if (arr[j].compareTo(min) < 0) { exchange = true; min = arr[j]; minIndex = j; } } if (!exchange) { break; } arr[minIndex] = arr[i]; arr[i] = min; System.out.println(Arrays.toString(arr)); } /** 原数组为: [23, 1, 42, 5, 2, 23, 12] [1, 23, 42, 5, 2, 23, 12] [1, 2, 42, 5, 23, 23, 12] [1, 2, 5, 42, 23, 23, 12] [1, 2, 5, 12, 23, 23, 42] */ } |
堆排序
时间: 2024-10-29 20:44:36