冒泡排序寻找一维数组中任意重复的数字

冒泡排序寻找一维数组中任意重复的数字

题目一1.在一个长度为n的数组,数组中的数字0~n-1范围,找出任意一个重复的数字。

// An highlighted block
import java.util.Arrays;

public class RepeatNum {
    
    
    /**
     * 冒泡排序-思想-两两比较大小,从小到大排列
     * 找重复数字,排序好后,比较相邻两个数字是否相等
     * @param arr
     */
    public static void find(int []arr){
    
    
        //判断参数合法性
        if(arr == null||arr.length == 0){
    
    
            return ;
        }
        //控制趟数
     for(int j=0;j<arr.length-1;j++) {
    
    
         //一趟冒泡排序
         for (int i = 0; i < arr.length - 1-j; i++) {
    
    //-j数组下标不会越界
             if (arr[i] > arr[i + 1]) {
    
    
                int temp = arr[i];
                 arr[i] = arr[i + 1];
                 arr[i + 1] = temp;
             }

         }
     }


    }

 public static int repeatNum(int[] arr){
    
    
        //判断参数合法性
     if(arr==null||arr.length==0){
    
    
         return Integer.MAX_VALUE;//返回整形值,可以这样
     }
     //题目要求所有数字在0~n-1范围内
     for(int i=0;i<arr.length;i++) {
    
    
         if (arr[i]<0||arr[i]>arr.length-1){
    
    
             return Integer.MAX_VALUE;
         }

     }
     //排序
     find(arr);
     System.out.println(Arrays.toString(arr));
     for(int j=0;j<arr.length-1;j++) {
    
    //j+1不能越界,所以arr.length-1
         if (arr[j] == arr[j + 1]) {
    
    
             return arr[j];
         }
     }
       return Integer.MAX_VALUE;

 }

    public static void main(String[] args){
    
    
         int [] arr =  {
    
    0,1,2,5,6,4,3,3};
         System.out.println(repeatNum(arr));
        


    }

}

猜你喜欢

转载自blog.csdn.net/qq_40939454/article/details/105717212