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

来源:互联网 发布:淘宝微淘官网首页 编辑:程序博客网 时间:2024/05/22 13:50

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

冒泡法排序(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); // 返回数组下标

0 0
原创粉丝点击