一步一步搞清排序之选择排序(JAVA)

来源:互联网 发布:qq三国js副本奥义 编辑:程序博客网 时间:2024/05/02 16:33

前FEI言HUA:本来该每天都更的,奈何昨天过生日玩(吃)太嗨(多),又突然收到老师的DDL,所以只能熬夜更啦~~~
回归正题,选择排序顾名思义就是选择最合适的数据,放入排序序列中
注:一下描述均以非降序排序为例
基本思路:在待排序元素中,选择最小的元素,放在已排序序列队尾。
举例:【4,3,5,7,1,9】
第一步:选择最小的元素放在数组最前端,以待排序数组第一个元素——4 (array【0】)为基准,在剩下的元素中,寻找最小的元素——1,与4交换位置,第一次排序完成,基准元素向后挪一位array【1】,继续上述步骤······
比较:选择排序经常拿来与冒泡排序做比较,注意他们的区别。选择排序是在待排序元素中直接选出一个最小的,交换位置;而冒泡排序是,只要array【n】>array【n+1】(非降序排列),就交换位置,直到把最小的数据顶上合适的位置为止。

package zj.com.select;import java.util.Arrays;import java.util.Scanner;import com.sun.org.apache.bcel.internal.generic.SWAP;public class Selectsort {    public void sSort(int[] array){        int j;        int index = 0;  //待排序元素中已搜索的最小元素索引        int temp = 0;          for(int i = 0;i<array.length-1;i++){            /*只需检测n-1个数据             * 因为N个数据,每一轮都会检测所有待排序的元素             * 最后剩下的一个一定是最大的元素            */            index = i;            for(j = i+1;j<array.length;j++){                if(array[j]<array[index])  index = j;            }            if(index!=i){                temp = array[i];                array[i] = array[index];                array[index] = temp;            }        }    }    public static void main(String[] args) {        Selectsort selectsort = new Selectsort();        int[] array = new int[10];        Scanner scanner = new Scanner(System.in);        for(int n =  0;n<10;n++){            array[n] = scanner.nextInt();        }        selectsort.sSort(array);        System.out.print(Arrays.toString(array));    }}
1 0
原创粉丝点击