/*
* 选择排序:
* 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("您要查找的数字没找到");
}
}