标签:int .so public mil 顺序 bsp [] 一个 sof
直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。
与冒泡排序相比,直接选择排序的交换次数要少很多,因此速度更快些。
每一趟从待排序的数组元素中选出最小(或最大)的一个元素,顺序的放在已排好序的数组元素前或后,直到全部待排序的数据元素排完。
例如有一个6个元素的数组【63 4 24 1 3 15】,排序大致过程如下所述:
第1轮排序:63和15交换位置:【15 4 24 1 3】63
第2轮排序:3和24交换位置:【15 4 3 1】24 63
第3轮排序:15和1交换位置:【1 4 3】15 24 63
第4轮排序:3和4交换位置:【1 3】4 15 24 63
第5轮排序:将3交换到元素‘4‘前面:【1】3 4 15 24 63
public class SelectSort { public static void main(String[] args) { int array[] = {63, 4, 24, 1, 3, 15}; SelectSort sorter = new SelectSort(); sorter.sort(array); } public void sort(int array[]) { int index; for (int i = 1; i < array.length; i++) { index = 0; for (int j = 1; j <= array.length - i; j++) { if (array[j] > array[index]) { index = j; } } // 交换在位置array.lenth-i和index(最大值)上的两个数 int temp = array[array.length - i]; array[array.length - i] = array[index]; array[index] = temp; } showArray(array); } public void showArray(int array[]) { for (int i : array) { System.out.print(" >" + i); } System.out.println(); } }
输出结果如下图所示:
标签:int .so public mil 顺序 bsp [] 一个 sof
原文地址:https://www.cnblogs.com/zwwhnly/p/10213276.html