首页 > 代码库 > 10、直接选择排序和反转排序

10、直接选择排序和反转排序

package com.xxx.xxx;/** * 1.直接选择排序 * 2.反转排序 * @author Administrator * */public class demo11 {    //直接选择排序    /**     * 直接选择排序比冒泡排序快一些     * 基本思想:将指定排序位置与其他数组元素分别对比,满足就交换     * (注意:这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换)     * 与冒泡排序相比,直接选择排序的交换次数要少很多     */    public static void main(String[] args) {        //直接选择排序        int index;        int[] array = {63,4,24,1,3,15};    //创建数组是乱序的        for(int i=1;i<=array.length;i++){ //开始为 1 ,判断是 小于等于            index = 0;            for(int j = 1;j<= array.length-i;j++){    //开始为 1, 判断是 小于等于, 长度-1                if(array[j] > array[index]){    // if判断                    index = j;                }            }            //交换在位置 array_sort.length-1 和 index_sort(最大值)上的两个数            int temp = array[array.length-i]; //把第一个元素保存在临时变量中            array[array.length-i] = array[index];    //把第二个保存在第一个            array[index] = temp; //把临时变量(也就是第一个)保存在第二个元素中        }        //遍历输出        for(int k : array){            System.out.print(">"+k);        }        System.out.println("\n--------------------------");        //2.反转排序        /**         * 基本思想:把数组最后一个元素与第一个元素替换,倒数第二个元素把第二个元素替换,以此类推,直到把所有数组元素反转替换         * 反转排序是对数组两边的元素进行替换,所以只需要循环数组长度的半数次         * 如数组长度为7,那么for循环只需循环3次         */        int[] a = {10,20,30,40,50,60};        //数组反转后遍历输出        for(int x : a){            System.out.print(x+"\t");        }        System.out.println();        int temp;        int len = a.length;    //获取数组长度        for(int i=0;i<len / 2 ;i++){    //根据算法,长度 除2            temp = a[i];            //交换            a[i] = a[len - 1 - i];            a[len - 1 - i] = temp;        }        //数组反转后遍历输出        for(int x : a){            System.out.print(x+"\t");        }    }}

 

10、直接选择排序和反转排序