在线看视频网站怎么做,企业网站建设的一般要素,广元网站建设,做别人一样的网站目录
一、冒泡排序
1.冒泡排序介绍
2.排序的思路
3.完整代码
二、折半查找
1.折半查找介绍
2.查找的思路
3.完整代码
三、逆序数组
1.逆序思路
2..完整代码 一、冒泡排序
冒泡排序是众多排序的一种#xff0c;无论在C语言或者Java中都很常见#xff0c;后续在数据…
目录
一、冒泡排序
1.冒泡排序介绍
2.排序的思路
3.完整代码
二、折半查找
1.折半查找介绍
2.查找的思路
3.完整代码
三、逆序数组
1.逆序思路
2..完整代码 一、冒泡排序
冒泡排序是众多排序的一种无论在C语言或者Java中都很常见后续在数据结构中也会用到
1.冒泡排序介绍
1冒泡排序思想
为两两排序每次的排序后最大或最小的就会升起到最后每完成一轮排序需要比较的数就少一个
2冒泡排序场景
多用于对数组内容的排序
2.排序的思路
1完成排序需要的内容
有数组需要求数组长度
2排序的过程解析 我们将下面数组排序成升序
int[] arr {10,9,8,7,6,5,4,3,2,1};
第一趟冒泡排序10个数需要比较9次成功把一个数字排好序 第二趟冒泡排序待排序的数字有9个所以需要比较的次数是8次 后续的排序趟数是类似的接下来我们总结一下规律
由上图可知10个数字一共需要比较的趟数是10-1次也就是(arr.length-1)第一趟排序需要比较的次数为9第二次是8与趟数有关系于是得出下面的代码 int i 0;for (i 0; i arr.length-1; i) {for (int j 0; j arr.length-1-i; j) {//可自己设置条件条件if(arr[j]arr[j1]) {//完成两个数字的交换int tmp arr[j1];arr[j1] arr[j];arr[j] tmp;}}} 升序的条件是第一个数大于第二个数就要交换如果是排逆序则是第一个数小于第二个数则需要交换
3.完整代码
import java.util.Arrays;public class Sort{
public static void main(String[] args) {//冒泡排序int[] arr {10,9,8,7,6,5,4,3,2,1};bubbleSort(arr);System.out.println(Arrays.toString(arr));}public static void bubbleSort(int[] arr) {//升序int i 0;for (i 0; i arr.length-1; i) {for (int j 0; j arr.length-1-i; j) {if(arr[j]arr[j1]) {int tmp arr[j1];arr[j1] arr[j];arr[j] tmp;}}}}
} 二、折半查找
1.折半查找介绍
1折半查找又称二分查找。
2二分查找每次都是从中间位置开始查找因此称为折半查找二分查找
3可以进行二分查找的条件
数组内的数据必须是有序的若是无序的可以先将其排成有序
2.查找的思路
1方法的参数写法
我们规定一下找到了就返回它的下标位置否则返回-1需要将数组和需要查找的数据传给下面的方法
public static int binarySearch(int[] arr,int k) {}
2查找的内部细节
定位下标定好两头位置便于找到中间位置 public static int binarySearch(int[] arr,int k) {int left 0;int right arr.length-1;}
中间数字表示 int mid (leftright)/2; 3二分查找的过程解析 先看代码 public static int binarySearch(int[] arr,int k) {int left 0;int right arr.length-1;while(left right) {//从中间位置开始找int mid (leftright)/2;if(k arr[mid]) {//k在左边rightmid-1;} else if(k arr[mid]) {//在右边leftmid1;} else {return mid;}}return -1;}
查找过程图解 第一次查找 第二次查找查找后right指向10left和mid都指向8 第三、四次查找找到了就返回mid位置的下标 3.完整代码
public static void main(String[] args) {//1.折半查找要求数组内容为有序.找到了返回下标int[] arr1 {2,5,7,8,10,11,15,17,20,22};int ret binarySearch(arr1,10);System.out.println(ret);//2.当数组无序时使用Array.sort排序后折半查找int[] arr2 {9,8,7,6,5,4,3,2,1,0};Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));int cur binarySearch(arr2,11);System.out.println(cur);}public static int binarySearch(int[] arr,int k) {int left 0;int right arr.length-1;while(left right) {//从中间位置开始找int mid (leftright)/2;if(k arr[mid]) {//k在左边rightmid-1;} else if(k arr[mid]) {//在右边leftmid1;} else {return mid;}}return -1;} 三、逆序数组
1.逆序思路
1要求将数组内容逆序不是逆序打印
int[] arr {10,9,8,7,6,5,4,3,2,1,0};
2设置头尾位置 public static void reverse(int[] arr) {int left 0;//头位置int right arr.length-1;//尾位置 } 这样是为了从两头开始交换数据 3循环交换数据 while(left right) {//相等的时候就不需要逆序了int tmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;} 内部代码其实就是实现两个数的交换当leftright的时候就是只剩下一个数据没有完成交换了其实也就不需要再交换了非要交换也行 2..完整代码 public static void main(String[] args) {//逆序数组int[] arr {10,9,8,7,6,5,4,3,2,1,0};reverse(arr);System.out.println(Arrays.toString(arr));}public static void reverse(int[] arr) {int left 0;int right arr.length-1;while(left right) {//相等的时候就不需要逆序了int tmp arr[left];arr[left] arr[right];arr[right] tmp;left;right--;}}