选择排序:分步指南
选择排序是一种简单的排序算法。 它反复从列表的未排序部分中查找最小元素并将其放在开头。这个过程一直持续到整个列表被排序为止。
选择排序的工作原理
让我们用一个例子来说明,按升序对这个数组进行排序:
迭代 1:
目标是将最小的元素放在开头。我们首先假设第一个元素是最小值。
我们将当前最小值与每个后续元素进行比较,如果找到更小的元素,则更新最小值。
这将持续到确定实际的最小值。
最后,我们将最小元素与第一个元素交换。
第一个元素现已排序。 后续迭代将仅考虑未排序的部分。
后续迭代:
对每个剩余的未排序元素重复此过程。
算法迭代 n-1 次(其中 n 是数组的长度)。 第五次迭代后(对于六元素数组),最后一个元素被隐式排序。
选择排序实现(Java):
<code class="language-java">import java.util.Arrays; public class SelectionSortTest { public static void main(String[] args) { int[] arr = {8, 2, 6, 4, 9, 1}; System.out.println("Unsorted array: " + Arrays.toString(arr)); selectionSort(arr); System.out.println("Sorted array: " + Arrays.toString(arr)); } public static void selectionSort(int[] arr) { int size = arr.length; // Iterate through the array size-1 times for (int i = 0; i < size - 1; i++) { int minIndex = i; // Find the minimum element in the unsorted part for (int j = i + 1; j < size; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // Swap the minimum element with the first unsorted element int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } }</code>
输出:
未排序数组:[8,2,6,4,9,1] 排序数组:[1, 2, 4, 6, 8, 9]
复杂性分析:
结论:
选择排序的 O(n²) 时间复杂度使其对于大型数据集效率低下。 它最适合小型阵列或简单性优先于性能的情况。
以上是了解选择排序算法(附Java示例)的详细内容。更多信息请关注PHP中文网其他相关文章!