Flask接口签名sign原理与实例代码浅析
269
2023-01-11
Java数组高级算法与Arrays类常见操作小结【排序、查找】
本文实例讲述了java数组高级算法与Arrays类常见操作。分享给大家供大家参考,具体如下:
冒泡排序
冒泡排序原理
冒泡排序代码:
http://package cn.itcast_01;
/*
* 数组排序之冒泡iJttpJfrqE排序:
* 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
*/
public class ArrayDemo {
public static void main(String[] args) {
// 定义一个数组
int[] arr = { 24, 69, 80, 57, 13 };
System.out.println("排序前:");
printArray(arr);
bubbleSort(arr);
System.out.println("排序后:");
printArray(arr);
}
//冒泡排序代码
/*总共需要比较数组长度-1次,x < arr.length - 1
*每一次比较完,下一次就会减少一次元素的比较。第一次比较有0个元素不比,第二次有1个元素不比,,,,所以 y < arr.length - 1 - x
*两两比较,大的往后放
* *http:///
public static void bubbleSort(int[] arr){
for (int x = 0; x < arr.length - 1; x++) {
for (int y = 0; y < arr.length - 1 - x; y++) {
if (arr[y] > arr[y + 1]) {
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
}
// 遍历功能
public static void printArray(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}
选择排序
选择排序原理图
选择排序代码
package cn.itcast_02;
/*
* 数组排序之选择排序:
* 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
*/
public class ArrayDemo {
public static void main(String[] args) {
// 定义一个数组
int[] arr = { 24, 69, 80, 57, 13 };
System.out.println("排序前:");
printArray(arr);
//用方法改进
selectSort(arr);
System.out.println("排序后:");
printArray(arr);
}
/*
* 数组排序
* */
public static void selectSort(int[] arr){
for(int x=0; x for(int y=x+1; y if(arr[y] int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } // 遍历功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } } 二分查找法 二分查找法原理 二分法的代码实现: package cn.itcast_04; /* * 查找: * 基本查找:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序 * * 分析: * A:定义最大索引,最小索引 * B:计算出中间索引 * C:拿中间索引的值和要查找的值进行比较 * 相等:就返回当前的中间索引 * 不相等: * 大 左边找 * 小 右边找 * D:重新计算出中间索引 * 大 左边找 * max = mid - 1; * 小 右边找 * min = mid + 1; * E:回到B */ public class ArrayDemo { public static void main(String[] args) { //定义一个数组 int[] arr = {11,22,33,44,55,66,77}; //写功能实现 int index = getIndex(arr, 33); System.out.println("index:"+index); //假如这个元素不存在后有什么现象呢? index = getIndex(arr, 333); System.out.println("index:"+index); } /* * 两个明确: * 返回值类型:int * 参数列表:int[] arr,int value */ public static int getIndex(int[] arr,int value){ //定义最大索引,最小索引 int max = arr.length -1; int min = 0; //计算出中间索引 int mid = (max +min)/2; //拿中间索引的值和要查找的值进行比较 while(arr[mid] != value){ if(arr[mid]>value){ max = mid - 1; }else if(arr[mid] min = mid + 1; } //加入判断 if(min > max){ return -1; } mid = (max +min)/2; } return mid; } } Arrays类 package cn.itcast_05; import java.util.Arrays; /* * Arrays:针对数组进行操作的工具类。比如说排序和查找。 * 1:public static String toString(int[] a) 把数组转成字符串 * 2:public static void sort(int[] a) 对数组进行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找 */ public class ArraysDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; // public static String toString(int[] a) 把数组转成字符串 System.out.println("排序前:" + Arrays.toString(arr)); // public static void sort(int[] a) 对数组进行排序 Arrays.sort(arr); SystemiJttpJfrqE.out.println("排序后:" + Arrays.toString(arr)); // [13, 24, 57, 69, 80] // public static int binarySearch(int[] a,int key) 二分查找 System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57)); System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577)); } } PS:这里再为大家推荐几款相似的在线工具供大家参考: 在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys 在线js常见遍历方式性能分析比较工具: http://tools.jb51.net/aideddesign/js_bianli 更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《JiJttpJfrqEava字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》 希望本文所述对大家java程序设计有所帮助。
for(int y=x+1; y if(arr[y] int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } // 遍历功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } } 二分查找法 二分查找法原理 二分法的代码实现: package cn.itcast_04; /* * 查找: * 基本查找:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序 * * 分析: * A:定义最大索引,最小索引 * B:计算出中间索引 * C:拿中间索引的值和要查找的值进行比较 * 相等:就返回当前的中间索引 * 不相等: * 大 左边找 * 小 右边找 * D:重新计算出中间索引 * 大 左边找 * max = mid - 1; * 小 右边找 * min = mid + 1; * E:回到B */ public class ArrayDemo { public static void main(String[] args) { //定义一个数组 int[] arr = {11,22,33,44,55,66,77}; //写功能实现 int index = getIndex(arr, 33); System.out.println("index:"+index); //假如这个元素不存在后有什么现象呢? index = getIndex(arr, 333); System.out.println("index:"+index); } /* * 两个明确: * 返回值类型:int * 参数列表:int[] arr,int value */ public static int getIndex(int[] arr,int value){ //定义最大索引,最小索引 int max = arr.length -1; int min = 0; //计算出中间索引 int mid = (max +min)/2; //拿中间索引的值和要查找的值进行比较 while(arr[mid] != value){ if(arr[mid]>value){ max = mid - 1; }else if(arr[mid] min = mid + 1; } //加入判断 if(min > max){ return -1; } mid = (max +min)/2; } return mid; } } Arrays类 package cn.itcast_05; import java.util.Arrays; /* * Arrays:针对数组进行操作的工具类。比如说排序和查找。 * 1:public static String toString(int[] a) 把数组转成字符串 * 2:public static void sort(int[] a) 对数组进行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找 */ public class ArraysDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; // public static String toString(int[] a) 把数组转成字符串 System.out.println("排序前:" + Arrays.toString(arr)); // public static void sort(int[] a) 对数组进行排序 Arrays.sort(arr); SystemiJttpJfrqE.out.println("排序后:" + Arrays.toString(arr)); // [13, 24, 57, 69, 80] // public static int binarySearch(int[] a,int key) 二分查找 System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57)); System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577)); } } PS:这里再为大家推荐几款相似的在线工具供大家参考: 在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys 在线js常见遍历方式性能分析比较工具: http://tools.jb51.net/aideddesign/js_bianli 更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《JiJttpJfrqEava字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》 希望本文所述对大家java程序设计有所帮助。
if(arr[y] int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } // 遍历功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } } 二分查找法 二分查找法原理 二分法的代码实现: package cn.itcast_04; /* * 查找: * 基本查找:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序 * * 分析: * A:定义最大索引,最小索引 * B:计算出中间索引 * C:拿中间索引的值和要查找的值进行比较 * 相等:就返回当前的中间索引 * 不相等: * 大 左边找 * 小 右边找 * D:重新计算出中间索引 * 大 左边找 * max = mid - 1; * 小 右边找 * min = mid + 1; * E:回到B */ public class ArrayDemo { public static void main(String[] args) { //定义一个数组 int[] arr = {11,22,33,44,55,66,77}; //写功能实现 int index = getIndex(arr, 33); System.out.println("index:"+index); //假如这个元素不存在后有什么现象呢? index = getIndex(arr, 333); System.out.println("index:"+index); } /* * 两个明确: * 返回值类型:int * 参数列表:int[] arr,int value */ public static int getIndex(int[] arr,int value){ //定义最大索引,最小索引 int max = arr.length -1; int min = 0; //计算出中间索引 int mid = (max +min)/2; //拿中间索引的值和要查找的值进行比较 while(arr[mid] != value){ if(arr[mid]>value){ max = mid - 1; }else if(arr[mid] min = mid + 1; } //加入判断 if(min > max){ return -1; } mid = (max +min)/2; } return mid; } } Arrays类 package cn.itcast_05; import java.util.Arrays; /* * Arrays:针对数组进行操作的工具类。比如说排序和查找。 * 1:public static String toString(int[] a) 把数组转成字符串 * 2:public static void sort(int[] a) 对数组进行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找 */ public class ArraysDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; // public static String toString(int[] a) 把数组转成字符串 System.out.println("排序前:" + Arrays.toString(arr)); // public static void sort(int[] a) 对数组进行排序 Arrays.sort(arr); SystemiJttpJfrqE.out.println("排序后:" + Arrays.toString(arr)); // [13, 24, 57, 69, 80] // public static int binarySearch(int[] a,int key) 二分查找 System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57)); System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577)); } } PS:这里再为大家推荐几款相似的在线工具供大家参考: 在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys 在线js常见遍历方式性能分析比较工具: http://tools.jb51.net/aideddesign/js_bianli 更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《JiJttpJfrqEava字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》 希望本文所述对大家java程序设计有所帮助。
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
// 遍历功能
public static void printArray(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}
二分查找法
二分查找法原理
二分法的代码实现:
package cn.itcast_04;
/*
* 查找:
* 基本查找:数组元素无序(从头找到尾)
* 二分查找(折半查找):数组元素有序
*
* 分析:
* A:定义最大索引,最小索引
* B:计算出中间索引
* C:拿中间索引的值和要查找的值进行比较
* 相等:就返回当前的中间索引
* 不相等:
* 大 左边找
* 小 右边找
* D:重新计算出中间索引
* 大 左边找
* max = mid - 1;
* 小 右边找
* min = mid + 1;
* E:回到B
*/
public class ArrayDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {11,22,33,44,55,66,77};
//写功能实现
int index = getIndex(arr, 33);
System.out.println("index:"+index);
//假如这个元素不存在后有什么现象呢?
index = getIndex(arr, 333);
System.out.println("index:"+index);
}
/*
* 两个明确:
* 返回值类型:int
* 参数列表:int[] arr,int value
*/
public static int getIndex(int[] arr,int value){
//定义最大索引,最小索引
int max = arr.length -1;
int min = 0;
//计算出中间索引
int mid = (max +min)/2;
//拿中间索引的值和要查找的值进行比较
while(arr[mid] != value){
if(arr[mid]>value){
max = mid - 1;
}else if(arr[mid] min = mid + 1; } //加入判断 if(min > max){ return -1; } mid = (max +min)/2; } return mid; } } Arrays类 package cn.itcast_05; import java.util.Arrays; /* * Arrays:针对数组进行操作的工具类。比如说排序和查找。 * 1:public static String toString(int[] a) 把数组转成字符串 * 2:public static void sort(int[] a) 对数组进行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找 */ public class ArraysDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; // public static String toString(int[] a) 把数组转成字符串 System.out.println("排序前:" + Arrays.toString(arr)); // public static void sort(int[] a) 对数组进行排序 Arrays.sort(arr); SystemiJttpJfrqE.out.println("排序后:" + Arrays.toString(arr)); // [13, 24, 57, 69, 80] // public static int binarySearch(int[] a,int key) 二分查找 System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57)); System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577)); } } PS:这里再为大家推荐几款相似的在线工具供大家参考: 在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys 在线js常见遍历方式性能分析比较工具: http://tools.jb51.net/aideddesign/js_bianli 更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《JiJttpJfrqEava字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》 希望本文所述对大家java程序设计有所帮助。
min = mid + 1;
}
//加入判断
if(min > max){
return -1;
}
mid = (max +min)/2;
}
return mid;
}
}
Arrays类
package cn.itcast_05;
import java.util.Arrays;
/*
* Arrays:针对数组进行操作的工具类。比如说排序和查找。
* 1:public static String toString(int[] a) 把数组转成字符串
* 2:public static void sort(int[] a) 对数组进行排序
* 3:public static int binarySearch(int[] a,int key) 二分查找
*/
public class ArraysDemo {
public static void main(String[] args) {
// 定义一个数组
int[] arr = { 24, 69, 80, 57, 13 };
// public static String toString(int[] a) 把数组转成字符串
System.out.println("排序前:" + Arrays.toString(arr));
// public static void sort(int[] a) 对数组进行排序
Arrays.sort(arr);
SystemiJttpJfrqE.out.println("排序后:" + Arrays.toString(arr));
// [13, 24, 57, 69, 80]
// public static int binarySearch(int[] a,int key) 二分查找
System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57));
System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));
}
}
PS:这里再为大家推荐几款相似的在线工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
在线js常见遍历方式性能分析比较工具:
http://tools.jb51.net/aideddesign/js_bianli
更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《JiJttpJfrqEava字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》
希望本文所述对大家java程序设计有所帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~