首页 > 其他分享 >冒泡排序、选择排序、二分查找

冒泡排序、选择排序、二分查找

时间:2024-01-23 20:25:47浏览次数:26  
标签:二分 arr int System 冒泡排序 length 查找 println out

 1 public static void main(String[] args) {
 2         //  冒泡排序
 3         //  定义一个数组,存储一些数据
 4         int[] arr = {5, 3, 1, 2, 9, 6};
 5         System.out.println("=========冒泡排序==========");
 6         //  定义一个循环轮数
 7         for (int i = 0; i < arr.length - 1; i++) {
 8             //  定义一个循环控制每轮的次数,占位
 9             for (int j = 0; j < arr.length - i - 1; j++) {
10                 if (arr[j] > arr[j+1]){ //  从小到大
11 //                if (arr[j] < arr[j+1]){ //  从大到小
12                     int tmp = arr[j+1];
13                     arr[j+1] = arr[j];
14                     arr[j] = tmp;
15                 }
16             }
17         }
18 
19         //  循环输出便利的结果
20         for (int i = 0; i < arr.length; i++) {
21             System.out.print(arr[i] + "\t");
22         }
23         System.out.println();
24 
25         System.out.println("=========选择排序==========");
26         //  外层循环 轮数
27         for (int i = 0; i < arr.length; i++) {
28             //  内存循环  选择次数
29             for (int j = i + 1; j < arr.length; j++) {
30 //                if (arr[i] > arr[j]){   //  从小到大
31                 if (arr[j] > arr[i]){   //  从大到小
32                     int tmp = arr[i];
33                     arr[i] = arr[j];
34                     arr[j] = tmp;
35                 }
36             }
37         }
38 
39         //  循环输出便利的结果
40         for (int i = 0; i < arr.length; i++) {
41             System.out.print(arr[i] + "\t");
42         }
43 
44         System.out.println();
45         System.out.println("=============二分查找===============");
46         int[] a1 = {9, 10, 12, 21, 30, 56, 70};
47         System.out.println(twoSearch(a1, 21));
48         System.out.println(twoSearch(a1, 56));
49         System.out.println(twoSearch(a1, 90));
50     }
51 
52     //  二分查找
53     public static int twoSearch(int[] arr, int n){
54         //  定义左边和右边的位置
55         int left = 0;
56         int right = arr.length -1;
57         //  开始循环,拆半查询
58         while (left <= right){
59             //  取中间索引
60             int middle = (left + right) / 2;
61             //  判断当前位置元素和要查找的元素大小情况
62             if (n > arr[middle]){
63                 //  往右边找   左边位置 = 中间索引 + 1
64                 left = middle + 1;
65             }else if (n < arr[middle]){
66                 //  往左边找    右边位置 = 中间索引 - 1
67                 right = middle -1;
68             }else {
69                 return middle;
70             }
71         }
72         return -1;//  没有该元素
73     }

 

标签:二分,arr,int,System,冒泡排序,length,查找,println,out
From: https://www.cnblogs.com/dsds/p/17983330

相关文章

  • 如何查找SpringBoot应用中的请求路径(不使用idea)
    背景昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多、这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚。除了自己写代码输出servlet的路径和类外,发现了一个我之前没用过的方法:SpringBootActuator,分享给大家。......
  • CF-91-B-单调栈+二分
    91-B题目大意给定一个长为\(n\)的序列\(a\),对于每个\(a[i]\),你需要找到一个\(j\)满足\(a[i]>a[j]\)且\(j-i\)最大。Solution逆序遍历,维护一个单调递减的栈,如果当前枚举的\(a[i]\)小于栈顶元素,则入栈。如果\(a[i]\)大于栈顶元素,那么后面的元素如果大于\(a[i]\),那么也大于栈顶......
  • 二叉查找树
    二叉查找树是类似于一种堆的数据结构(没有重复元素)二叉查找有一个性质:中序遍历得到的就是关键码升序排列的序列这个结构支持很多的操作insert(intval):新增一个关键码为val的节点get(intval):查找关键码为val的节点getnext(intval):查找val的前驱(严格大于val的最小值,可能val......
  • 二分查找
    二分查找一、应用场景​ 一个很常见的情景:猜数——猜大了就小一点,猜小了就大一点。我们在这个例子中发现,不停的缩小范围,舍弃(更贴切的说法是“排除”)不必要的搜查范围,这样有利于我们去快速查找。​ 这种二分思想,我们也可应用到其他方面:比如开平方数之类——不停的从目标区间的......
  • 线段树二分
    问题描述维护长度为\(n\)的序列\(a\),支持以下操作:1ix:把\(a_i\)修改为\(x\)。2ix:询问最小的\(j\)满足\(j>=i\)且\(a_j>=x\)。\(1\leqn\leq10^6\)解决方法在线段树外直接二分可以做到\(O(n\log^2n)\)的时间复杂度,加上简单的剪枝可能效率会高一些,但都无......
  • js用前缀名查找class或id节点,js模糊查询某个dom节点
     1//参数dom为htmldom节点2//参数key为需模糊查询的名称字段3functionqueryClassNode(dom,key){4letcollectArray=[];5for(leti=0;i<dom.childNodes.length;i++){6//核心点7if(d......
  • 二分搜索应用 II
    目录1.题目列表2.应用2.1.Leetcode410.分割数组的最大值2.1.1.题目2.1.2.解题思路2.1.3.代码实现1.题目列表序号题目难度1410.分割数组的最大值困难2.应用2.1.Leetcode410.分割数组的最大值2.1.1.题目410.分割数组的最大值给定一个非负整......
  • Visual Studio实用的搜索、查找、替换技巧
    前言对于.NET开发者而言VisualStudio是我们日常工作中比较常用的开发工具,掌握一些VisualStudio实用的搜索、查找、替换技巧可以帮助我们大大提高工作效率从而避免996。VisualStudio更多实用技巧https://github.com/YSGStudyHards/DotNetGuide代码和功能搜索(Ctrl+T)Ctr......
  • 【LeetCode】704. 二分查找
    题目:704.二分查找解题思路思路:给定一个nums数组,注意数组是升序排列的;那么,找到当前target元素是否存在于数组之中,可采用二分法查找注意:此处定义该数组区间定义:【左闭右闭】/【左闭右开】使用left指向数组头,right指针指向数组尾,mid用于计算二分查找的位置,mid=left+(ri......
  • 使用find命令查找文件
    要查找一个ssl.h的文件 find/-namessl.h2>/dev2/null使用root权限,从根目录下查找 ssl.h文件将错误日志重定向到 /dev2文件夹下面的null文件如果dev2文件夹不存在,需要手动创建/usr/include/openssl/ssl.h  扩展说明:在Unix/Linux系统中,>和2>分别......