网站一般怎么维护,百度上怎么做推广,rp网站自动跳转图片怎么做,类似wordpress博客简单认识算法
什么是算法#xff1f;
解决某个实际问题的过程和方法#xff01; 排序算法 冒泡排序 选择排序
冒泡排序 每次从数组中找到最大值放在数组的后面去 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组in…简单认识算法
什么是算法
解决某个实际问题的过程和方法 排序算法 冒泡排序 选择排序
冒泡排序 · 每次从数组中找到最大值放在数组的后面去 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组int[] arr {5,2,3,1};//定义一个循环控制排几轮for (int i 0; i arr.length-1; i) {//定义一个循环控制每轮比较几次for (int j 0; j arr.length-i-1; j) {//判断当前位置的元素值是否大于后一个位置处的元素值如果大则交换if (arr[j]arr[j1]){int temp arr[j1];arr[j1]arr[j];arr[j]temp;}}}System.out.println(Arrays.toString(arr));}
}
选择排序
每轮选择当前位置开始找出后面的较小值与该位置交换 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组int[] arr {5,2,3,1};//定义一个循环控制选择几轮for (int i 0; i arr.length-1; i) {//定义一个循环控制每轮选择几次for (int j i1; j arr.length; j) {//判断当前位置的元素值是否大于后面位置处的元素值如果大则交换if (arr[i]arr[j]){int temp arr[i];arr[i]arr[j];arr[j]temp;}}}System.out.println(Arrays.toString(arr));}
}
优化
import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组int[] arr {5,2,3,1};//定义一个循环控制选择几轮for (int i 0; i arr.length-1; i) {int minIndex i;//定义一个循环控制每轮选择几次for (int j i1; j arr.length; j) {//判断当前位置的元素值是否大于后面位置处的元素值如果大则交换if (arr[minIndex]arr[j]){minIndexj;}}//决定是否交换if (i!minIndex){int temp arr[i];arr[i]arr[minIndex];arr[minIndex]temp;}}System.out.println(Arrays.toString(arr));}
}查找算法
基本查找 /顺序查找
注意在数据量特别大的时候基本查找这种从前往后挨个找的形式性能是很差的
二分查找折半查找
前提条件数组中的数据必须是有序的
核心思想每次排除一半的数据查询数据的性能毛线提高极多
二分查找正常的折半条件应该是开始位置 left 结束位置 right
public class Work1 {public static void main(String[] args) {//准备一个数组int[] arr {7,23,79,81,103,127,131,147};System.out.println(binarySearch(arr, 81));}public static int binarySearch(int[] arr,int data){//定义两个变量一个站在左边位置一个站在右边位置int left 0;int right arr.length-1;//定义一个循环控制折半while (leftright){//3每次折半都算出中间位置的索引int middle (leftright)/2;//4,判断当前要找的元素值与中间位置处的元素值的大小情况if (dataarr[middle]){//往左边找截止位置(右边位置)中间位置-1rightmiddle-1;}else if (dataarr[middle]){//往右边找起始位置(左边位置)中间位置1leftmiddle1;}else {//中间位置处的元素值正好等于我们要找的元素值return middle;}}return -1;//-1特殊结果就代表没有找到数据数组中不存在该数据}
} Java提供的 binarySearch 方法可以直接应用
public class Work1 {public static void main(String[] args) {//准备一个数组int[] arr {7,23,79,81,103,127,131,147};System.out.println(binarySearch(arr, 81));System.out.println(Arrays.binarySearch(arr, 81));}
}