标签:[] 算法 另一个 基础 log ++ 数组 pack ack
选择排序是排序算法当中的入门算法,相信学过数据结构与算法的同学都是从这个排序开始的吧。大一接触选择排序算法的时候觉得好简单(相比冒泡排序来说),因为它的实现方式比较接近于人的思维方式。顾名思义,选择排序算法,起码会有个“选择”的过程吧?没错,选择排序就是设定了两个区域,一个为有序区,另一个则是无序区了。或者说是已排序区和等待排序区,都是一样的。在选择排序当中,每次循环都是在无序区当中选择一个最小(或最大)的元素,跟当前的元素进行交换;如果无序区中没有比当前元素小(或大)的值,那么已经是无序区中最小值了,它的合适位置就是当前位置。
比方说,有一个长度为4的数组a,{3,2,4,1}。那么我们第一趟排序就是要确定第一个位置,也就是下标为0的位置,此时下标为0的位置是3,依次与后面元素比较,发现2比3小,那么下标为0的元素和小标为1的元素交换位置,此时a[0]为2,继续比较发现a[3]比a[1]小,那么a[0]与a[3]交换位置,依次类推。
1 package selectionSort; 2 3 import java.util.Arrays; 4 /* 5 * 选择排序 6 * 本例子为升序 7 */ 8 public class SelectSort { 9 public static void selectSort(int[] array) { 10 11 12 for (int i = 0; i < array.length; i++) { 13 /* 14 * 每一趟排序都默认该位置为最小值,如果后面找到更小的,两者交换位置 15 */ 16 for (int j = i + 1; j < array.length; j++) { 17 if (array[j] < array[i]) { 18 int tmp = array[i]; 19 array[i] = array[j]; 20 array[j] = tmp; 21 } 22 } 23 24 } 25 26 } 27 28 public static void main(String[] args) { 29 30 int[] arr = {2,1,7,3,5}; 31 System.out.println("排序前:" + Arrays.toString(arr)); 32 33 selectSort(arr); 34 System.out.println("排序后:" + Arrays.toString(arr)); 35 36 } 37 }
标签:[] 算法 另一个 基础 log ++ 数组 pack ack
原文地址:http://www.cnblogs.com/xiaosheblog/p/7624659.html