首页 > 试题广场 >

下列排序算法中,()在某趟排序结束后不一定能选出一个元素放到

[单选题]

下列排序算法中,()在某趟排序结束后不一定能选出一个元素放到其最终位置上。

  • 选择排序
  • 冒泡排序
  • 希尔排序
  • 堆排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。    所以每一趟选择的元素都会放在他的最终位置

冒泡排序, 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。比如按照升序排序则每一趟会将前面未排序部分的最大的往后交换到已排序的最前面,为其最终位置

堆排序如果要求升序则建立大根堆,降序则建立小根堆,堆顶元素为最大或者最小的元素,将这个元素与最后一个位置的元素交换,再将剩余元素还原成大小跟堆,每一趟都会选出一个未排序中的最大或者最小放大他的最终位置

希尔排序由于是按照增量排序,步长不同可能元素不一定到他最终位置,所以选C
发表于 2016-12-05 15:56:19 回复(0)
冒泡排序的代码
public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return;  } for (int e = arr.length - 1; e > 0; e--) { for (int i = 0; i < e; i++) { if (arr[i] > arr[i + 1]) { swap(arr, i, i + 1);  }
      }
   }
} public static void swap(int[] arr, int i, int j) {
   arr[i] = arr[i] ^ arr[j];  arr[j] = arr[i] ^ arr[j];  arr[i] = arr[i] ^ arr[j]; }

发表于 2020-10-12 16:54:58 回复(1)
直接插入也是不一定吧?
发表于 2019-10-14 21:03:42 回复(1)