插入算法
import java.util.Arrays;
import java.util.Scanner;
/**
* 插入算法:
*
* @author Administrator
*
*/
public class ArrayDemo01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//[1]两个数组
int [] oldArray = {34,45,112,223,456};
int [] newArray = new int [oldArray.length+1]; //新数组比原数组长度多一
//[2]循环赋值
for(int i = 0;i<oldArray.length;i++){
newArray[i]=oldArray[i];
}
//测试
System.out.println(Arrays.toString(newArray)); //Arrays的toString方法,将数组以字符串的形式输出(toString是一个打印内存地址的东西,可是现在打印的不是内存地址,说明肯定是Arrays重写了toStirng方法。)
//[3]循环比较
int number = input.nextInt(); //要插入的数据
int index = newArray.length-1; //记录要插入的位置的下标(默认下标为最大下标)
for(int i = 0;i<newArray.length;i++){
if(newArray[i]>number){
index=i;
break;
}
}
//[4]找到位置,移动其他的数据位置
for(int i = newArray.length-1;i>index;i--){
newArray[i]=newArray[i-1];
}
//插入数据
newArray[index]=number;
System.out.println(Arrays.toString(newArray));
}
}
冒泡排序
import java.util.Arrays;
/**
* 冒泡排序:
* n个数字来排队
* 两两相比小靠前
* 外层循环n-1
* 内层循环n-1-i
*
* @author Administrator
*
*/
public class ArrayDemo02 {
public static void main(String[] args) {
int [] arry = {23,35,22,11,4,6,12};
System.out.println(Arrays.toString(arry));
//排序
for(int i = 0;i<arry.length-1;i++){ //外层循环 -->轮数 n-1
for(int j =0;j<arry.length-1-i;j++){ //内层循环 -->次数 n-1-i
if(arry[j]>arry[j+1]){ //两两相比小靠前
//交换
int temp = arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
System.out.println("排序后:");
System.out.println(Arrays.toString(arry));
}
}
选择排序
import java.util.Arrays;
/**
* 选择排序:
* @author Administrator
*
*/
public class ArrayDemo03 {
public static void main(String[] args) {
//创建数组
int [] arr = {44,55,11,22,33};
//排序
for(int i= 0;i<arr.length-1;i++){ //轮数
for(int j = i+1;j<arr.length;j++){ //次数
//
if(arr[i]>arr[j]){ //依次比较,每个i和j进行比较
//交换
int temp= arr[i];
arr[i] = arr[j];
arr[j]=temp;
}
}
}
System.out.println("排序后:");
System.out.println(Arrays.toString(arr));
}
}
import java.util.Arrays;
/**
* 二分查找:
* 折中查找:
* @author Administrator
*
*/
public class ArrayDemo04 {
public static void main(String[] args) {
//int b =Arrays.binarySearch(ar, key)
//创建一个数组
int [] a = {33,44,11,22,55,12};
//升序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int b =Arrays.binarySearch(a, 10); //二分查找
System.out.println(b);
/* //查找下标
int begin = 0; //从0开始
int end = a.length-1; //最后一个元素
//循环查找
while(begin<=end){
//设置中间值
int mid = (begin+end)/2; //折中
//要查找的数
int number =56;
if(a[mid]==number){
System.out.println("您要找到数的下标是:"+mid);
break;
}else if(a[mid]>number){
end = mid-1;
}else if(a[mid]<number){
begin = mid+1;
}else{
System.out.println("别找了,没有!!!!");
}
}
*/
}
}