/*** 操作数组的常用方式*/
public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[] { 1, 3, 10, 2, 5, 7, 8 };// 排序前System.out.println("--------------------排序前--------------------");printArray(arr);// 选择排序// selectSort(arr);// 冒泡排序bubbleSort(arr);System.out.println("--------------------排序后--------------------");printArray(arr);// 普通查找法System.out.println(arrayIndexOf(arr, 10));//二分法查找方式1System.out.println(searchElIndex(arr, 5));//二分法查找方式2System.out.println(searchElIndex2(arr, 5));}/*** 选择排序(每一轮将第一个元素和数组中的每个元素进行比较)* @param arr 待排序的数组*/public static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {/** 调换元素的位置 方式1:使用临时变量*//*int temp = arr[i];arr[i] = arr[j];arr[j] = temp;*//** 方式2,将相比的两数做加减运算。* 如:int[] arr = {2,1}; * arr[0] = arr[0] + arr[1]; ==》3=2+1; * arr[1] = arr[0] - arr[1]; ==》2=3-1;* arr[0] = arr[0] - arr[j]; ==》1=3-2;*//*arr[i] = arr[i] + arr[j];arr[j] = arr[i] - arr[j];arr[i] = arr[i] - arr[j];*/swap(arr, i, j);}}}}/*** 冒泡排序(两个相邻的数进行比较)* @param arr 待排序的数组*/public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) { // 控制比较的次数for (int j = 0; j < arr.length - i - 1; j++) { // -i:比较的元素减少  -1:为了避免抛ArrayIndexOutOfBoundsExceptionif (arr[j] > arr[j + 1]) {/*int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;*/swap(arr, j, j+1);}}}}/*** 将数组中的两个元素交换位置* @param arr 待交换元素位置的数组* @param index1 元素下标1* @param index2 元素下标2*/public static void swap(int[] arr, int index1, int index2) {int temp = arr[index1];arr[index1] = arr[index2];arr[index2] = temp;}/*** 二分法查找一个元素在数组中的下标* @param arr 数组* @param key 要查找的元素* @return 找到返回元素在数组中的下标,没找到则返回-1*/public static int searchElIndex(int[] arr, int key) {int min,max,mid;min = 0;max = arr.length - 1;mid = (min + max) / 2;while (arr[mid] != key) {if (key > arr[mid]) {min = mid + 1;} else if (key < arr[mid]) {max = mid - 1;} if (min > max) return -1; mid = (min + max) / 2;}return mid;}/*** 二分法查找一个元素在数组中的下标* @param arr 数组* @param key 要查找的元素* @return 找到返回元素在数组中的下标,没找到则返回-1*/public static int searchElIndex2(int[] arr, int key) {int min,max,mid;min = 0;max = arr.length - 1;while (min <= max) {mid = (min + max) >> 1;if (key > arr[mid]) {min = mid + 1;} else if (key < arr[mid]) {max = mid - 1;} else {return mid;}}return -1;}/*** 查找一个元素在数组中的位置,该函数可以查找未经排序数组的第一个元素所在数组中的下标* @param arr 查找的数组* @param key 查找的元素* @return 如果找到则返回该元素在数组中的下标,没找到则返回-1*/public static int arrayIndexOf(int[] arr, int key) {for(int i = 0; i < arr.length; i++) {if (arr[i] == key) return i;}return -1;}/*** 打印数组* @param arr 待打印的数组*/public static void printArray(int[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i < arr.length - 1) {System.out.print(arr[i] + ",");} else {System.out.print(arr[i]);}}System.out.println("]");}}

转载于:https://www.cnblogs.com/xyang0917/archive/2012/01/01/4172552.html

操作数组的常用方式二-----排序、查找相关推荐

  1. JS创建数组的常用方式及遍历总结

    参考链接 js数组遍历和对象遍历 JS创建数组的三种方法 数组的常用创建方式 //方式1 隐式创建数组var arr1 = ["value1","value2" ...

  2. 遍历json数组的常用方式

    遍历json对象数组 1. 传统数组遍历 var data=[{"name":"zhangsan","age":12},{"nam ...

  3. 数组的常用五种排序算法

    目录 一.排序算法介绍 二.算法代码实现 1.选择法排序 2.冒泡法排序 3.交换法排序 4.插入法排序 5.折半法排序 一.排序算法介绍 1.选择法排序 选择法排序在排序过程中一共需要进行 n(n- ...

  4. day19 java数组的常用算法和排序

    1.冒泡排序法 2.选择排序法 3.二分查找 4.array常见工具类 以后补充

  5. Java中Arrays.toString ()打印二维数组及Array数组的常用操作

    1.Java中Arrays.toString () 已知打印一维数组的API为System.out.println ( Arrays.toString ();,其参数为数组名或数组指针,其支持的数据类 ...

  6. java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...

    一.Arrays jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作.例如快速输出.排序.查找等. 1.数组的常用方法 1.数组以字符串形式的输出,2.sort对数组排序 ...

  7. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  8. php数组(数组的定义、使用、删除数组、数组操作符、数组排序、数组元素查找、数组的常用函数)

    什么是数组 数组是一种数据类型,在PHP中广泛应用. 数组是一个可以存储一组或一系列数值的变量. 在PHP中,数组中的元素分为两个部分,分别为键(Key)和值(Value). "键" ...

  9. (Excel)常用函数公式及操作技巧之九:查询和查找引用

    (Excel)常用函数公式及操作技巧之九: 查询和查找引用 --通过知识共享树立个人品牌. 查找顺序公式 =LOOKUP(2,1/(A1:A20<>0),A1:A20) =MATCH(7, ...

最新文章

  1. CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
  2. MIP 扩展组件开发手册
  3. JavaScript 代码判断:PC端和手机端
  4. [ESP8266]--开启服务器模式和客户端模式
  5. C语言:查找数组中最小的元素
  6. 蚂蚁课堂视频笔记思维导图-3期 三、性能优化专题
  7. Java 的三种 Base64
  8. ZigBee模块——从新冠、癌症防治看物联网智慧医疗的应用
  9. NOI Linux 2.0版发布
  10. 吃透Kafka六:topic 创建过程
  11. 浅谈中国2050年人均受教育年限问题
  12. 虚幻4 游戏引擎 C++编程 官网例程解析
  13. 信息系统安全防范策略
  14. QLU ACM2018新生赛
  15. 祖冲之究竟是如何算出圆周率的?
  16. 1062lcd在dxp哪个库_Protel DXP 自带常用元件库路径
  17. 微信二维码转换成链接
  18. Vue全家桶都包括些什么?
  19. 杀神java手游,杀神杀第一单职业手游
  20. 马化腾:腾讯不会申请虚拟运营商牌照

热门文章

  1. 深度学习(三十八)卷积神经网络入门学习(2.0)
  2. python把空格替换成字符串,用空格替换字符串中的字符
  3. 上海东海学院计算机,上海东海职业技术学院
  4. linux内核的外部接口函数,linux内核中GPIO的使用(二)--标准接口函数
  5. SpringBoot2 Redis连接池
  6. 关键词是用分号还是逗号隔开_逗号、顿号、分号、冒号、破折号的用法
  7. ufvm可以读哪些网格_墙面开裂原因有哪些?钢筋网和网格布怎么用?
  8. vue3.0生产环境和正式环境配置_vue开发环境和生产环境配置
  9. 2018.11.08 NOIP模拟 班车(倍增+dfs+bit)
  10. Keepalived实现双机热备