数组的高级应用主要有排序和二分查找:
数组常见的排序:主要有冒泡排序和选择排序
一.冒泡排序:
冒泡排序的原理:相邻的两个元素比较,大的放在后面,小到放在前面,比较的躺输是数组的个数减1;,具体的实现过程看代码:
package array;
public class Demo1 {
public static void main(String[] args) {
int[] array={1,5,9,2,3,5,6,4,6,15,88};
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
System.out.println("冒泡排序的顺序");
for(int i=0;i<array.length;i++){
System.out.print(array[i]+",");
}
}
}
解析:外层for循环控制的比较躺输.内层for循环控制的个比较的次数,
二.选择排序:
选择排序的原理:
依次拿某个位置上的元素和后面的左右元素比较大小,大的放在后面,每次确定的就是此位置上的元素,比较的躺输就是元素的个数减1.
package array;
public class Demo1 {
public static void main(String[] args) {
int[] array={1,5,9,2,3,5,6,4,6,15,88};
for(int i=0;i<array.length-1;i++){
for(int j=i+1;j<array.length;j++){
if(array[i]>array[j]){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
System.out.println("选择排序的顺序");
for(int i=0;i<array.length;i++){
System.out.print(array[i]+",");
}
}
}
解读:外层for循环控制的是比较的论述,内层for比较的元素元比较的次数
二分查找:
package array;
public class Demo1 {
public static void main(String[] args) {
int value=0;
int[] array={1,5,9,2,3,5,6,4,6,15,88};
for(int i=0;i<array.length-1;i++){
for(int j=i+1;j<array.length;j++){
if(array[i]>array[j]){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
//使用二分查找的前提就是这个数组是有序的(从小到大)
int min=0;
int max=array.length-1;
int mid=(min+max)/2;
while(min<=max){
if(array[mid]>value){//说明落在了左边
max=mid-1;
}else if(array[mid]<value){//说明落在了右边
max=mid+1;
}else{
System.out.println(mid);
}//重新计算mid的值
mid=(min+max)/2;
}
System.out.println(-1);
}
}