栋哥带你学Java数组排序和二分查找
2018-01-04 20:59
375 查看
数组的排序
一、冒泡排序
注意:只讲java中最常用的两种排序,不喜勿喷. 冒泡排序的核心思想:相连两个数进行比较 然后交换位置 int[] array = new int[]{3, 2, 5, 7, 1}; // 注意 内循环-1 防止数组越界 // 外循环 -1 代表 5个数 比较4趟 比较数组长度-1趟 // 内循环 -i 每一趟都少比一次 // 外循环相当于 比较多少趟 // 内循环相当于 一趟比多少次 for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if(array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }
二、选择排序
选择排序的核心思想:选择一个数和下一个数比较换位(基本上都是默认数组的第一个数跟后面的数进行比较) int[] array = new int[]{3, 2, 5, 7, 1}; for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { int select = array[i]; if (select > array[j]) { array[i] = array[j]; array[j] = select; } } }
三、系统自带的排序和排序后的输出
这里介绍一下系统已经写好的排序方法 Arrays.sort(array);这里的array就是自己定义的数组名 要点:这个排序是升序的,上面介绍的冒泡和选择排序也是升序的,如果要降序的话就把if里面的 > 改成 <就行了. 给数组排完序后有输出的方法: 1.再遍历一次数组然后打印输出 代码如下: for(int i = 0; i < array.length; i++){ System.out.println(array[i]); } 2.用系统的已经写好的方法输出 System.out.println(Arrays.toString(array));
二、二分查找(折半查找)
前提:数组中查找 查找这个数在数组中的角标 注意: 在有序的数组中查找 优势:省时间 // 定义一个有序的一维数组 int[] array = new int[]{3, 6, 9, 12, 18, 22, 33}; // 数组最值下标 int min = 0; // 数组最大下标 int max = array.length - 1; // 中间值下标 int mid = (min + max) / 2; // 要查找的值 int key = 12; /* * 循环查找 * array[mid] != key */ while (array[mid] != key) { // 比较 如果比中间角标大 挪动最小下标 // 如果比中间角标小 挪动最大下标 if (key > array[mid]) { min = mid + 1; }else if (key < array[mid]) { max = mid - 1; } // 挪动完下标后 还要进行折半操作 mid = (max + min) / 2; // 当最大下标小于最小下标的时候 说明数组中没有这个数 if(max < min) { // 进到这里说明没这个数 停止循环 mid = -1; break; } } System.out.println(mid);
相关文章推荐
- JAVA基础复习十三-StringBuffer、数组排序、二分查找、自动拆装箱
- 黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
- java基础知识4--数组,排序,二分查找
- JAVA数组排序——二分(折半)查找
- java数组排序,二分查找
- 【Java版本】二分查找&数字在排序数组中出现的次数
- Java数组遍历、求最大值、选择排序、冒泡排序、二分查找
- Java数组中的排序和二分查找
- Java第四章【流程控制与数组、数组的操作【遍历、排序、查找】】
- 二分查找——数字在排序数组中出现的次数
- Java基础04:选择排序;冒泡排序;折半查找;二位数组
- JAVA开发中已排序数组的查找方法
- 冒泡排序,简单插入排序,快速排序,二分查找的JAVA实现
- 数组排序、求最值、二分查找
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找
- 黑马程序员--05JAVA数组及其排序和查找
- 二分查找-针对已排序数组
- 17、java数组查找与交换排序及快速排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 黑马程序员--数组的排序和查找--java学习日记2(基础知识)