动画
原理
- 以首元素为轴 一串数据中,找一个最小的,和它进行交换,从代码中看 预期结果应该是1和85换掉了 应该是代码实现如下:
-
public void Test() { // 定义一个数组 int[] array = {85,2,3,6,5,1,9,75,100,}; selectSort(array); // 打印出来 for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } private void selectSort(int[] array) { // 下标从 0 开始 int index = 0; // 开始找比第一个还小的值 记录下标 for (int i = 1; i < array.length; i++) { if (array[index] > array[i]) { index = i; } } int temp = array[0]; array[0] = array[index]; array[index] = temp; }
打印结果 第一步结束
-
1 2 3 6 5 85 9 75 100
Process finished with exit code 0
-
-
经过了上面的一次操作后,可以不难得到一个最小的和第一个换,同样的道理,下次从第二个开始,继续做这个操作,直到结束,那么就排序好了,完整代码如下
-
public void Test() { // 定义一个数组 int[] array = {85,2,3,6,5,1,9,75,100,}; selectSort(array); // 打印出来 for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } private void selectSort(int[] array) { for (int j = 0; j < array.length - 1; j++) { // 下标从 0 开始 int index = j; // 开始找比第一个还小的值 记录下标 for (int i = j+1; i < array.length; i++) { if (array[index] > array[i]) { index = i; } } if (index != j) { int temp = array[j]; array[j] = array[index]; array[index] = temp; } } }
打印结果:
-
1 2 3 5 6 9 75 85 100
Process finished with exit code 0
done