您的位置:首页 > 其它

选择排序之直接选择排序

2015-10-08 22:06 127 查看
选择排序之直接选择排序
  直接选择排序思想:第一趟从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)

是不稳定排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: