排序

快速排序

package com.zkh.sort;

/**
 * 快速排序算法:
 *  找一个基数
 *  使其左边的值都不大于这个基数
 *  右边的值都都不小于这个基数
 */
public class QuitSort {
    //快速排序


    public static void main(String[] args) {
        int array[] = {10, 5, 7, 3, 9, 2};
        System.out.println("排序之前:");
        for(int a : array){
            System.out.print(a + " ");
        }
        quitSort(array, 0, array.length-1);
        System.out.println("排序之后:");
        for(int a : array){
            System.out.print(a + " ");
        }
    }

    public static void quitSort(int[] array, int _left, int _right){

        int left = _left;
        int right = _right;
        if (left < right) {
            int temp = array[left];
            while (left != right) {

                while (array[right] >= temp && left < right) //从左往右扫描,找到第一个比基准元素小的元素
                    right--;
                array[left] = array[right]; //然后将这种元素array[right]与array[left]进行交换

                while(array[left] <= temp && left < right)
                    left++;
                array[right] = array[left];
            }
            array[right] = temp;
            quitSort(array, _left, left - 1);
            quitSort(array, right + 1, _right);
        }
    }
}

循环二分法及递归二分法查询

package com.zkh.sort;

public class BinarySearch {
    //循环二分法查找
    public static int binarySearch(int[] arr, int x) {

        int low = 0;
        int high = arr.length-1;
        while (low <= high) {
            int middle = (high + low) / 2;
            if (x == arr[middle]) {
                return middle;
            }else if (x < arr[middle]) {
                high = middle - 1;
            }else {
                low = middle + 1;
            }
        }
        return -1;
    }
    //递归二分法查找
    public static int binarySearch(int[] arr, int data, int begin, int end) {
        int middle = (begin + end) / 2;
        if (data > arr[end] || data < arr[begin] || begin > end) {
            return -1;
        }
        if (data < arr[middle]) {
            return binarySearch(arr, data, begin, middle - 1);
        }else if(data > arr[middle]){
            return binarySearch(arr, data, middle + 1, end);
        }
        return middle;
    }

    public static void main(String[] args) {
        //数组的初始化
        //第一种静态初始化
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        //第二种动态初始化
        int [] arr2 = new int[5];

        for(int i = 0; i < 5; i++){
            arr2[i] = i;
        }
        //System.out.println(arr2[1]);
        //第三种使用new关键字创建数组,这里new不需要指定长度,数组长度由其后的初始化操作来确定
        int[] arr3 = new int[]{1,2,34};

        System.out.println(binarySearch(arr, 3));
        System.out.println(binarySearch(arr2, 3, 0, arr2.length -1 ));
    }
}

匹配大括号、中括号、小括号

package com.zkh.arrtest;

import java.util.Scanner;


public class Check {
    private int maxSize = 0;
    private static int top = -1;
    private static char[] chars;
    public Check(int maxSize){
        this.maxSize = maxSize;
        top = -1;
        chars = new char[maxSize];
    }
    public static void main(String[] args) {
        Check check = new Check(20);
        //接收用户输入
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] s = str.toCharArray();
        int length = str.length();
        if(length % 2 != 0){
            System.out.println("配对失败");
            return;
        }
        for(int i = 0; i < length; i++){
            if(s[i] == '{' || s[i] == '[' || s[i] == '('){
                pushOne(s[i]);
            }
            if(s[i] == '}' || s[i] == ']' || s[i] == ')'){
                char c = topOne();
                if(s[i] == '}' && c == '{' || s[i] == ']' && c == '[' || s[i] == ')' && c == '('){
                    popOne(s[i]);
                }

            }
        }
        clear();

    }

    private static void pushOne(char c) {
        chars[++top] = c;
    }
    private static void popOne(char c){
        if(top == -1){
            System.out.println("配对失败");
            return;
        }
        c = chars[top--];
    }
    private static char topOne(){
        return chars[top];
    }

    private static void clear(){
        if(top == -1){
            System.out.println("配对成功");
            return;
        }else{
            System.out.println("配对失败");
            return;
        }
    }
}
Windows 系统修复工具主要用于解决 Windows 11/10 系统中的各种常见问题,具有操作简单、功能全面等特点: 文件资源管理器修复:可解决文件资源管理器卡死、崩溃、无响应等问题,能终止崩溃循环。还可修复右键菜单无响应或选项缺失问题,以及重建缩略图缓存,让图片、视频等文件的缩略图正常显示,此外,还能处理桌面缺少回收站图标、回收站损坏等问题。 互联网和连接修复:能够刷新 DNS 缓存,加速网页加载速度,减少访问延迟。可重置 TCP/IP 协议栈,增强网络连接稳定性,减少网络掉线情况,还能还原 Hosts 文件,清除恶意程序对网络设置的篡改,保障网络安全,解决电脑重装系统后网络无法连接、浏览器主页被篡改等问题。 系统修复:集成系统文件检查器(SFC),可自动扫描并修复受损的系统文件。能解决 Windows 激活状态异常的问题,还可重建 DLL 注册库,恢复应用程序兼容性,解决部分软件无法正常运行的问题,同时也能处理如 Windows 沙箱无法启动、Windows 将 JPG 或 JPEG 保存为 JFIF 等系统问题。 系统工具维护:提供启动管理器、服务管理器和进程管理器等工具,用户可控制和管理启动程序、系统服务和当前运行的进程,提高系统的启动和运行速度,防止不必要的程序和服务占用系统资源。还能查看系统规格,如处理器线程数、最大显示分辨率等。 故障排除:集成超过 20 个微软官方诊断工具,可对系统问题进行专业排查,还能生成硬件健康状态报告。能解决搜索和索引故障、邮件和日历应用程序崩溃、设置应用程序无法启动等问题,也可处理打印机、网络适配器、Windows 更新等相关故障。 其他修复功能:可以重置组策略设置、catroot2 文件夹、记事本等多种系统设置和组件,如重置 Windows 应用商店缓存、Windows 防火墙设置等。还能添加重建图标缓存支持,恢复粘滞便笺删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值