排序算法之一选择排序

JAVA学习网 2017-10-27 16:20:02

选择排序介绍

  选择排序是一直简单直观的排序算法,其算法思想如下:每一次从待排序数据元素集合中选出最小的数据元素(或最大的数据元素),按照顺序依次放在已排好序的数列的最前面(或最后面),数据元素集合不断缩小,直到数据元素集合为空时,选择排序结束。

举例:

原始数据元素集合:12  32  21  3  74

第一次排序后:【3】  12  32  21  74

第二次排序后:【3  12】  32  21  74

第三次排序后:【3  12  21】  32  74

第四次排序后:【3  12  21  32】  74

最后排序结果:【3  12  21  32  74】

 代码实现:

private static void selectSort(int[] array, int length) {
        int small;//最小元素的下标
        for(int i=0;i<array.length;i++){
            small=i;
            for(int j=i+1;j<array.length;j++){
                if(array[j]<array[small]){ //寻找最小元素
                    small=j;//记住最小元素的下标
                }
            }
            //当最小元素的下标不为i时交换位置
            int temp = array[i]; 
            array[i] = array[small];
            array[small]= temp;
        }

测试代码:

public class SelectSortDemo {
    public static void main(String[] args) {
        int[] array={12,32,21,3,74};
        System.out.printf("排序前:");
        
        //打印排序前数据元素
        for(int i=0;i<array.length;i++){
            System.out.printf("%d ",array[i]);
        }
        
        selectSort(array,array.length);//调用顺序排序方法进行排序
        System.out.printf("排序后:");
        
        //打印排序后数据元素
        for(int i=0;i<array.length;i++){
            System.out.printf("%d ",array[i]);
        }
        
    }
}

结果:

排序前:12 32 21 3 74 排序后:3 12 21 32 74 

 

阅读(744) 评论(0)