提示信息

Java选择排序算法

勒渊 已关注

选择排序是一种简单直观的排序算法。它的工作原理是每次从未排序部分找到最小(或最大)的元素,然后将其放到已排序部分的末尾。下面是用Java实现选择排序算法的一个示例:

  1. public class SelectionSort {
  2. public static void selectionSort(int[] array) {
  3. int n = array.length;
  4. for (int i = 0; i < n - 1; i++) {
  5. // 假设当前元素是未排序部分中最小的
  6. int minIndex = i;
  7. // 在未排序部分中找到实际的最小元素
  8. for (int j = i + 1; j < n; j++) {
  9. if (array[j] < array[minIndex]) {
  10. minIndex = j;
  11. }
  12. }
  13. // 交换找到的最小元素与当前位置元素
  14. if (minIndex != i) {
  15. int temp = array[minIndex];
  16. array[minIndex] = array[i];
  17. array[i] = temp;
  18. }
  19. }
  20. }
  21. public static void main(String[] args) {
  22. int[] array = {64, 25, 12, 22, 11};
  23. System.out.println("排序前的数组:");
  24. printArray(array);
  25. selectionSort(array);
  26. System.out.println("排序后的数组:");
  27. printArray(array);
  28. }
  29. // 辅助方法,用于打印数组
  30. public static void printArray(int[] array) {
  31. for (int i : array) {
  32. System.out.print(i + " ");
  33. }
  34. System.out.println();
  35. }
  36. }

关键步骤:

  1. 选择未排序部分的最小元素:对于每一趟遍历,从未排序部分找出最小的元素。
  2. 交换过程:将找到的最小元素与当前未排序部分的第一个元素交换。
  3. 重复:对每一个位置重复上述步骤,直到数组完全排序。

复杂度分析:

  • 时间复杂度:O(n²),其中n是数组的长度。在最坏、最好和平均情况下,选择排序的时间复杂度都是O(n²)。
  • 空间复杂度:O(1),因为选择排序是就地排序,不需要额外的存储空间。

选择排序的优点是容易实现和理解,不需要额外的存储空间。然而,由于它的时间复杂度较高,在处理大型数据集时效率不高。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
勒渊 关注 已关注

最近一次登录:2024-11-20 04:30:13   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图