/* * 选择排序: * 1.首先在未排序序列中找到最小(大)序列,存放到牌序序列的最小位置 * 2.然后,再从剩下未排序中继续寻找最小(大)元素,然后放到排序的末尾 * 3.重复一二步,直到所有元素排序完成 */ //假设数组中的元素为 13,46,22,65,3 /*第零轮 * 13 46 22 65 3 13<46 不交换 arr[0]与arr[1]比较 * 13 46 22 65 3 13<22 不交换 arr[0]与arr[2]比较 * 13 46 22 65 3 13<65 不交换 arr[0]与arr[3]比较 * 13 46 22 65 3 13>3 交换 arr[0]与arr[4]比较 * */ //此时零位置确定 /*第一轮 * 3 46 22 65 13 46>22 交换 arr[1]与arr[2]比较 * 3 22 46 65 13 22<65 不交换 arr[1]与arr[3]比较 * 3 22 46 65 13 122>13 交换 arr[1]与arr[4]比较 * */ //此时一位置确定 /*第二轮 * 3 13 46 65 22 46<65 不交换 arr[2]与arr[3]比较 * 3 13 46 65 22 46>22 交换 arr[2]与arr[4]比较 * */ //此时二位置确定 /*第三轮 * 3 13 22 65 46 65<46 交换 arr[3]与arr[4]比较 * */ //此时三四位置确定 3 13 22 46 65 public static void xuanze(int[] arr) { //循环数组长度-1次 for(int i=0;i<arr.length-1;i++) { for(int j=i+1;j<arr.length;j++) { if(arr[i]>arr[j]) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for(int z=0;z<arr.length;z++) { System.out.println(arr[z]);
/* * 数组逆序: * 逆序算法: * 第一个 和最后一个互换 * 分奇数和偶数,但最后实际代码测试,好像不用奇偶 */ public static void shuzunixu(int[] arr) { //分奇数和偶数 int length=arr.length; //if(length%2==0) { for(int i=0;i<length/2;i++) { int k=arr[i];//0 1 arr[i]=arr[length-i-1];//3 2 arr[length-i-1]=k; } /*}else if(length%2!=0){ //假设5位 for(int i=0;i<length/2;i++) { int k=arr[i];//0 1 arr[i]=arr[length-i-1];//4 3 arr[length-i-1]=k; }*/ //} for(int z=0;z<arr.length;z++) { System.out.println(arr[z]); } }}
/* * 数组的二分法查找 * 搜索过程从数组中间开始查找 * 前提:数组必须有序 */ //arr={23,34,45,56,67,78,89} public static void erfenfa(int[] arr,int keyword) { //获取数组长度 int max=arr.length-1; int min=0; int mid=(max+min)/2; //索引 //int index=-1; while(min<=max) { mid=(max+min)/2; if(keyword<arr[mid]) { max=mid; }else if(keyword>arr[mid]){ min=mid; }else if(keyword==arr[mid]){ System.out.println(mid); break; }else { System.out.println("您要查找的数字没找到"); } }