直接选择排序和反转排序
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"); } } }