
12-03 Java语言基础(数组排序 & 二分查找)
发布日期:2021-05-06 23:59:38
浏览次数:24
分类:技术文章
本文共 1807 字,大约阅读时间需要 6 分钟。
冒泡排序
思想:
1、两两比较,如果前面的数比后面的数大,就交换。经过一轮后,最大的数就在最后面了。2、经过 n - 1 轮后,排序完成
代码:
public class Demo1_Sort { public static void main(String[] args) { //冒泡排序 int[] arr = { 11, 22, 15, 9}; BubbleSort(arr); for(int a : arr) { System.out.print(a + " "); } } public static void BubbleSort(int[] arr) { for(int i = 0; i < arr.length - 1; i++) { for(int j = 1; j < arr.length - i; j++) { if(arr[j - 1] > arr[j]) { int temp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = temp; } } } }}
输出:
9 11 15 22
选择排序
思想:
1、用一个索引位置上的元素,依次与其它索引位置上的元素比较,小的在前面,大的在后面。2、比较n - 1 次即可
代码:
public class Demo2_Sort { public static void main(String[] args) { //选择排序 int[] arr = { 11, 22, 9, 0, -5, 56, 100}; selectSort(arr); for(int a : arr) { System.out.print(a + " "); } } private 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]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } }}
输出:
-5 0 9 11 22 56 100
二分查找
二分查找的前提:数组有序!!
思想:每次找最中间的值,不管大了还是小了,都会砍掉一半的数,缩小查找范围
代码:
import com.heima.sort.*;public class Demo1_Search { public static void main(String[] args) { //二分查找 int[] arr = { 11, 23, 0, -5, 98, 45, 22}; Demo1_Sort.BubbleSort(arr); for(int a : arr) { System.out.print(a + " "); } System.out.println(); System.out.println(binarySearch(arr, 98)); } private static int binarySearch(int[] arr, int num) { int left = 0; int right = arr.length - 1; int mid; while(left <= right) { mid = (left + right) / 2; if(arr[mid] > num) { right = mid - 1; }else if(arr[mid] < num) { left = mid + 1; }else { return mid; } } return -1; }}
输出:
-5 0 11 22 23 45 98 6
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月26日 21时28分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ReID基础 | ReID工程中的一些小trick
2019-03-04
LINQ之Single,SingleOrDefault
2019-03-04
OpenCV6边缘检测[Canny算法]
2019-03-04
Hadoop_Scala操作Hbase
2019-03-04
Scala_1.控制台打印,变量定义,函数定义
2019-03-04
十五.Python异常处理
2019-03-04
c++备考期末必须看的知识点(一篇就够了)
2019-03-04
qt中初始化界面的几种方法
2019-03-04
【图论】游乐场
2019-03-04
【图论】【最短路】USACO 2.4 牛的旅行 (最短路)
2019-03-04
【图论】【最短路】工厂的烦恼
2019-03-04
【图论】刻录光盘
2019-03-04
C语言初阶——指针
2019-03-04
[88]. 合并两个有序数组(C语言)
2019-03-04
docker部署Hadoop环境
2019-03-04
最全环境搭建-常用软件安装
2019-03-04
Linux 安装 MySql
2019-03-04
系统架构
2019-03-04
网关程序的开发
2019-03-04
SpringBoot(Spring IOC 和 Spring MVC)(待补充)
2019-03-04