IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java算法以及Arrays用法 -> 正文阅读

[数据结构与算法]java算法以及Arrays用法

Java中的常用算法

一、冒泡排序

重点规律:冒泡排序的最外层的次数是arr.length-1

第二层的循环的次数是arr.length-1-i

package com.qu;
?
import java.util.Arrays;
?
public class D4 {
?
    public static void main(String[] args) {
        // 冒泡排序
        int[] arr = {1,2,33,11,222,754,998};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                if (arr[j]>arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
?
    }
?
}
?

二、选择排序

思路:先把第i个当成默认值,然后与后面的数进行比较(i+1)取最小值,判断第i个数不等于最小值就交换位置

...循环

package com.qu;
?
import java.util.Arrays;
import java.util.Iterator;
?
public class XuanZeSort {
?
    public static void main(String[] args) {
        // 选择排序 简单写法
        int[] arr = {222,322,11,2,3213,2222,5634,7,89,654};
//      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;
//              }
//          }
//      }
//      System.out.println(Arrays.toString(arr));
        
//      选择排序2
        for (int i = 0; i < arr.length-1; i++) {
            int min = i; //这个地方是索引
            for (int j = i+1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j;
                }
            }
            if (min != i) {
                int temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
        System.out.println(Arrays.toString(arr));
?
    }
?
}
?

三、插入排序

思路:第一次比较12个,第二次比较123个,第三次比较1234个...

package com.qu;
?
import java.util.Arrays;
?
public class ChaRuSort {
?
    public static void main(String[] args) {
        // 插入排序
        int[] arr = {1,23,22,11,2,6,84,99};
        
        //待插入的队列
        for (int i = 1; i < arr.length; i++) {
            int n = i; //插入的位置
            while(n>0 && arr[n]<arr[n-1]) {
                int temp = arr[n];
                arr[n] = arr[n-1];
                arr[n-1] = temp;
                n--;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
?
}
?

四、二分查找法

必须是一个有序序列,要用while的死循环,因为不知道要查多少次,还有就是要记得break关闭

package com.qu;
?
import java.util.Scanner;
?
public class D3 {
?
    public static void main(String[] args) {
        // 二分查找法 必须是有序数组 不知道查多少次,用while的死循环
        int[] arr = {1,5,9,11,15,22,58,99,100};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个你要查找的数:");
        int num = sc.nextInt();//拿一个容器去接这个数
        int start = 0;//定义初始值 是索引
        int end = arr.length-1;
        while(true) {
            int mid = (end+start)/2;
            if (arr[mid] == num) {
                System.out.println("猜对了,这个数的索引是"+mid);
                break;
            }else if (arr[mid] > num) { //猜的数小了
                end = mid-1;
            }else { //arr[mid] > num 猜的数大了
                start = mid+1;
            }
            if (start>end) {
                System.out.println("没有这个数");
                break;
            }
        }
        
?
    }
?
}
?

五、杨辉三角

package com.qu;
?
public class YangHui {
    public static void main(String[] args) {
        int n = 10;
        int[][] arr = new int[n][];
        for (int i = 0; i < n; i++) {
            arr[i] = new int[i+1];
            for (int j = 0; j <= i; j++) {
                if (j==0 || j==i) {
                    arr[i][j] = 1;
                    System.out.print(1+" ");
                }else {
                    arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
                    System.out.print(arr[i][j]+" ");
                }
            }
            System.out.println();
        }
    }
}
?

六、Arrays工具类

①打印多维数组(deepToString)

int[][] arr = {{1,2}{2,3}};
System.out.println(Arrays.deepToString(arr));

②binarySearch,二分查找(有返回值)

int[][] arr3 = {1,2,3,5,21,4};
int num = Arrays.binarySearch(arr3,5);
System.out.println(num); //4 找得到就返回索引,找不到就是负数

③排序 sort

Arrays.sort(arr3);//这个工具类只能从小到大排序
System.out.println(Arrays.toString(arr3));

④替换数组指定角标位置元素,fill

Arrays.fill(arr3,0,2,666);//把索引位0-2的替换成666,左闭右开
System.out.println(Arrays.toString(arr3));//[666,666,3,5,21,4]

⑤截取数组(copyOfRange)有返回值

int arr4 = Arrays.copyOfRange(arr3,0,2);//左闭右开
?
System.out.println(Arrays.toString(arr4));//[1,2]

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:48:40  更:2022-07-17 16:53:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:15:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码