三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)

本文介绍了四种基本的数组操作算法:冒泡排序以其两两相邻比较的特点;选择排序通过查找最小值交换位置;插入排序通过比较并调整元素顺序;二分查找则是在已排序的数组中高效查找元素的策略。了解这些基础算法有助于提升编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)

冒泡法排序(BubbleSort)

特点: 两两相邻比较

int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
    for(int i = 0;  i < arr.length; i++){   // 升序
        for(int j = 0; j < arr.length - i -1; j++ ){
            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }

选择排序(ChoiceSort)

特点:查找出最小值记录其下标,一次循环之后,将其与前面的元素交换值;

int k = 0,min;
    int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
    for(int i = 0;  i < arr.length - 1; i++){  
        min = arr[i];
        for(int j = i + 1; j < arr.length; j++ ){
            if(min > arr[j]){
                k = j;
                min = arr[j];
            }
        }
        int temp = arr[i];
        arr[i] = arr[k];
        arr[k] = temp;
    }

插入排序(InsertSort)

特点:将后面的数与前面的数比较大小并转换值;

int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
    for(int i = 1;  i < arr.length - 1; i++){  
        for(int j = 0; j < i; j++ ){
            if(arr[i] < arr[j]){
                int temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }

二分查找法(BinarySort)

前提:在已排序的数组中进行查找
特点:从中间开始对数组进行查找,如果N小于中间数,则对左半部分进行查找,如果N大于中间数,则对右半部分进行查找直到找到元素

int n = (int) (Math.random() * 20 + 1);     // 1-100的随机数
        boolean b = false;
        int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
        Arrays.sort(arr);   // 先对数组进行排序
        int first = 0,last = arr.length - 1,mid = arr.length / 2;
        while(first <= last){
            if(n == arr[mid]){
                b = true;
                break;
            }else if(n > arr[mid]){
                first = mid + 1;
            }else if(n < arr[mid]){
                last = mid - 1; 
            }
            mid = (first + last) / 2; 
        }
        if(b){
            System.out.print("查找成功!\n数组的下标为: " + mid );
        }else{
            System.out.print("查找失败!");
        }

可使用: java.util.Arrays类中的BinarySearch方法 Arrays.binarySearch(arr,n); // 返回数组下标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值