@TOC
冒泡排序
从前向后依次两两比较,将大的排到后面
public class MaoPao {
public static void main(String[] args) {
int[] arr={23,55,20,98,100,72};
// 定义一个循环控制冒泡总共需要几轮(数组的长度-1轮)
for (int i=0;i<arr.length-1;i++){
// 控制每轮比较几次
for (int j=0;j<arr.length-i-1;j++){
if (arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("数组"+ Arrays.toString(arr));
}
}
选择排序
拿当前的和后面的每个依次比较,比他们小就排在前面
public class XuanZe {
public static void main(String[] args) {
int[] arr={2,5,1,8,10,7};
// 定义一个循环控制几轮
for (int i=0;i<arr.length-1;i++){
// 定义一个每轮比较几次,拿当前位置的元素与后面的元素比较
// 遍历后面的元素
for (int j=i+1;j<arr.length;j++){
// 拿当前i和后面指定j进行大小比较,后面较小的换到前面
if (arr[j]<arr[i]){
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
System.out.println("数组"+ Arrays.toString(arr));
}
}
二分查找排序
二分查找对数组有要求,前提是数组必须排好序
每次先与中间的元素比较,如果大于就向右边找,如果小于就向左边找,
如果等于就返回该元素的索引位置,如果不存在就返回 -1,综合性能比较好
public class Erfenchazhao {
public static void main(String[] args) {
int[] arr={5,8,10,11,12,15,16,17,21,30,40,50,100,101,500};
int index=binarySerach(arr,30);
System.out.println(index);
}
private static int binarySerach(int[] arr, int number) {
int start=0; //起始位置
int end=arr.length-1; // 结束位置
// 定于一个循环不断的折中寻找
while (start<=end-1){
// 定义中间元素的索引
int middleIndex=(start+end)/2;
// 拿当前元素的值与中间元素比较
if (number>arr[middleIndex]) {
// 当前元素大于中间元素,向右找,起始位置索引要加1
start = middleIndex + 1;
}else if (number<arr[middleIndex]){
// 当前元素小于中间元素,向左找,结束位置索引-1
end=middleIndex-1;
}else {
return middleIndex;
}
}
return -1;
}
}
网友评论