• 算法


    //选择排序
    public class SelectSort {
        public static void main(String[] args) {
            int [] arry = {3,1,6,2,5};
            for (int i = 0; i < arry.length -1; i++){
                int min = i;
                for(int j = i + 1; j < arry.length; j++){
                    if(arry[j] < arry[min]){
                        min = j;
                    }
                }
                // 如果min 不等于 i 等需要交换,
                if(min != i){
                   int temp;
                   temp = arry[min];
                   arry[min] = arry[i];
                   arry[i] = temp;
                }
            }
            for(int element:arry){
                System.out.println(element);
            }
        }
    }
    // 冒泡排序
    public class BubbleSort {
        public static void main(String[] args) {
            int[] arry = {1,3,5,2,7,6,12,56};
            // 冒泡排序的核心:将左边的数和右边的数进行比较,当左边>右边时,交换位置,默认升序排序
            int count = 0;
            for (int i = 0; i < arry.length; i++){
                count ++;
                for (int j =  arry.length - 1; j > i; j--){
                    if(arry[j-1] > arry[j]){
                        int tmp;
                        tmp = arry[j-1];
                        arry[j-1] = arry[j];
                        arry[j] = tmp;
                    }
                }
            }
            System.out.println("比较次数: " + count);
            for (int element:arry){
                System.out.println(element);
    
            }
        }
    }
    

      

    二分法查找:
    
    class BinarySearch {
        public static void main(String[] args) {
            int [] arry = {10,20,30,40,50,60};
            int index = binarySearch(arry, 30);
            System.out.println(index == -1 ? "该元素不存在": "改元素的下标 " + index);
        }
        public static int binarySearch(int[] arry, int dest){
            int begin = 0;
            int end = arry.length -1;
            while (begin < end){
                int mid = (begin + end) /2;
                if (arry[mid] == dest){
                    return mid;
                }else if(arry[mid] < dest){
                    begin = mid + 1;
                }else {
                    end = mid  - 1;
                }
            }
            return -1;
        }
    }
    

      

  • 相关阅读:
    有向强连通分支Tarjan算法
    让理科生沉默,让文科生落泪的题
    迷宫求解(数据结构栈应用)
    编程中无穷大常量的设定技巧
    poj 3159 差分约束+spfa
    codevs 1690 线段树
    uvalive 2756 环形排列颠倒的次数
    poj 2182 树状数组
    uva 10943 数学
    uva 10780 分解质因数
  • 原文地址:https://www.cnblogs.com/hello-python2020/p/14239143.html
Copyright © 2020-2023  润新知