数据结构学习之选择排序
1.直接选择排序:
先上图:
说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序,
那小孩首先会在这么多玩具中找到最小的放在第一位,然后找到次小的放在第二位,以此类推。。。。。。
第一步: 我们拿80作为参照物(base),在80后面找到一个最小数20,然后将80跟20交换。
第二步: 第一位数已经是最小数字了,然后我们推进一步在30后面找一位最小数,发现自己最小,不用交换。
第三步:........
程序源码为:
1 package com.swust.选择排序; 2 import com.swust.utils.ArrayUtils; 3 4 public class Example1 { 5 public static void main(String[] args) { 6 int[] arr = ArrayUtils.createArray(10); 7 sort(arr); 8 ArrayUtils.showArray(arr); 9 } 10 private static void sort(int[] arr) { 11 //要遍历的次数 12 for(int i=0;i<arr.length-1;i++){ 13 //首先假定最小元素的位置为i 14 int small = i; 15 for(int j=i;j<arr.length;j++){ 16 //找到真实最小元素,并且将假定最小元素的下标替换为真实最小元素的下标 17 if(arr[small]>arr[j]){ 18 small=j; 19 } 20 } 21 //将真实最小元素和假定最小元素交换位置 22 int temp = arr[small]; 23 arr[small] = arr[i]; 24 arr[i]=temp; 25 } 26 } 27 }