选择排序之直接选择排序

来源:互联网 发布:复杂网络算法matlab 编辑:程序博客网 时间:2024/06/08 23:07

选择排序之直接选择排序

  直接选择排序思想:第一趟从n个元素的数据序列中选出最小/大的元素放到最前/后的位置,下一趟从n-1个元素中选出最小/大的元素并放到次前/后的位置,如此循环,经过n-1趟完成排序。

序列{38,97,26,19,38*,15}的直接选择排序过程如下图:


直接选择排序算法代码如下:

import java.util.Scanner;public class SelectSort {public static void selectSort(int[] keys) {for (int i = 0; i < keys.length - 1; i++) {// 遍历n-1趟int min = i;// 标记最小位置for (int j = i + 1; j < keys.length; j++) {// 从i+1之后数列中查找更小的数if (keys[j] < keys[min]) {min = j;}}if (min != i) {// 如果不同,则交换位置keys[i] = keys[min] ^ keys[i];keys[min] = keys[i] ^ keys[min];keys[i] = keys[i] ^ keys[min];}}}public static void main(String[] args) {Scanner s = new Scanner(System.in);int[] n = new int[10];for (int i = 0; i < n.length; i++) {n[i] = s.nextInt();}selectSort(n);// 调用选择排序算法for (int i = 0; i < n.length; i++) {System.out.print(n[i] + " ");}}}

直接选择排序时间复杂度O(n2),最好情况O(n2),最坏情况O(n2),空间复杂度O(1)

是不稳定排序。









0 0