标签:
找到第一小的数字,放在第一個位置;再找到第二小的数字,放在第二個位置
依次找到每次遍历的最小的值。一次找一個数字,如此下去就会把所有数值按照
順序排好。注意,与冒泡不同,遍历的过程中并不交换数值。一次遍历结束才交换。
package com.sphere.algorith.design; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] arr = {3,6,1,7,9,-8,2,5}; System.out.println("排序前:"+Arrays.toString(arr)); int[] sort_arr = selection_sort(arr); System.out.println("排序后:"+Arrays.toString(sort_arr)); } // 选择排序法 public static int[] selection_sort(int[] array){ if(array == null || array.length == 0){ System.out.println("所排序的数组为空!"); return null; } // 数组长度 int len = array.length; // 循环计数器 int i ,j; int minValue = 0; //记录一次遍历中的最小值 int index = 0; //记录最小值的索引值 for (i = 0; i < len - 1; i++) { minValue = array[i]; //假设第i个元素为最小 index = i; for (j = i+1; j < len; j++) { if(array[j] < minValue){ minValue = array[j]; //每次取得剩余的最小值,及其下标。 index = j; } } array[index] = array[i]; // 一次遍历结束,将最小的值与第i个元素交换 array[i] = minValue; } return array; } }
排序前:[3, 6, 1, 7, 9, -8, 2, 5]
排序后:[-8, 1, 2, 3, 5, 6, 7, 9]
标签:
原文地址:http://www.cnblogs.com/sphere/p/4891351.html