直接选择排序基本思想:
N个元素,每次挑出最大或者最小,执行(n-1)次循环。它的思想非常朴素,每趟都选出剩余中最大或者最小的排在已经排好的数据后面。
处理流程:
- 从待排序序列中,找到关键字最小的元素;
- 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
- 从余下的 N - 1 个元素中,找出关键字最小的元素,重复1,2步,直到排序结束。
- 直接选择排序java代码:
-
import java.util.Arrays; /** * 直接选择排序 **/ public class DirectSort { public static void directSort(int[] a) { for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]) swap(a,i, j); } System.out.println("第" + i + "次排序结果:"+Arrays.toString(a)); System.out.println(); } } public static void swap(int[] a,int i, int j) { int temp; temp = a[i]; a[i] =a[ j]; a[j] = temp; } public static void main(String args[]) { int[] a = {1, 3, 43, 5, 33, 53, 3, 7, -9, 23, 90}; directSort(a); }
}
-
- 运行结果:
第0次排序结果:[-9, 3, 43, 5, 33, 53, 3, 7, 1, 23, 90] 第1次排序结果:[-9, 1, 43, 5, 33, 53, 3, 7, 3, 23, 90] 第2次排序结果:[-9, 1, 3, 43, 33, 53, 5, 7, 3, 23, 90] 第3次排序结果:[-9, 1, 3, 3, 43, 53, 33, 7, 5, 23, 90] 第4次排序结果:[-9, 1, 3, 3, 5, 53, 43, 33, 7, 23, 90] 第5次排序结果:[-9, 1, 3, 3, 5, 7, 53, 43, 33, 23, 90] 第6次排序结果:[-9, 1, 3, 3, 5, 7, 23, 53, 43, 33, 90] 第7次排序结果:[-9, 1, 3, 3, 5, 7, 23, 33, 53, 43, 90] 第8次排序结果:[-9, 1, 3, 3, 5, 7, 23, 33, 43, 53, 90] 第9次排序结果:[-9, 1, 3, 3, 5, 7, 23, 33, 43, 53, 90] 第10次排序结果:[-9, 1, 3, 3, 5, 7, 23, 33, 43, 53, 90]