• 排序


    冒泡排序法

    public static void main(String[] args) {
    
            int arr[] = {8, 5, 3, 2, 4};
    
            //冒泡
            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 + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }

    选择排序

    //将 i 前面的当作是已经排好序的,后面是无序的。在i后面无序中选择出最小的那个值,和i的值进行替换

    public
    static void main(String[] args) { int arr[] = {6, 5, 3, 2, 4}; //选择 for (int i = 0; i < arr.length; i++) { //默认第一个是最小的。 int min = arr[i]; //记录最小的下标 int index = i; //通过与后面的数据进行比较得出,最小值和下标 for (int j = i + 1; j < arr.length; j++) { if (min > arr[j]) { min = arr[j]; index = j; } } //然后将最小值与本次循环的,开始值交换 int temp = arr[i]; arr[i] = min; arr[index] = temp; //说明:将i前面的数据看成一个排好的队列,i后面的看成一个无序队列。每次只需要找无需的最小值,做替换 } }

    插入排序:默认将i左边看成有序列表,后面无序的列表循环每一个数据,如果比前面的数据小则交换

    public static void main(String[] args) {
    
            int arr[] = {7, 5, 3, 2, 4};
    
            //插入排序
            for (int i = 1; i < arr.length; i++) {
                //外层循环,从第二个开始比较
                for (int j = i; j > 0; j--) {
                    //内存循环,与前面排好序的数据比较,如果后面的数据小于前面的则交换
                    if (arr[j] < arr[j - 1]) {
                        int temp = arr[j - 1];
                        arr[j - 1] = arr[j];
                        arr[j] = temp;
                    } else {
                        //如果不小于,说明插入完毕,退出内层循环
                        break;
                    }
                }
            }
        }

     快速排序:

    package test;
    
    public class sort4 {
        public static void main(String[] args) {
        int arr[] = {7, 5, 3, 2, 4};
    //快速排序   
        int l=0;
        int r=arr.length-1;
        quickSort(arr,l,r);
        
          for(int i=0;i<arr.length;i++) {
                System.out.println(arr[i]);
            }
    
        }
    
        private static void quickSort(int[] arr, int l, int r) {
            if(l<r) {
    
                int i=l;   //复制 l和r的值是因为 后面递归的时候要用到l,r
                int j =r;
                //记录一下这次要找的是哪个值
                int temp=arr[i];
                //此时 arr[i]是空的            
                while(i!=j) {
                    //从右边找第一个大于temp的数
                    while(i<j&&arr[j]>temp)j--;
                    arr[i]=arr[j];
                    //将找到的arr[j]填写到空出来的arr[i]的位置,
                    //此时arr[j]变成空的
                    while(i<j&&arr[i]<temp)i++;
                    arr[j]=arr[i];
                    //此时arr[i]变成空的    
                }
                //当最后i=j的时候,就找到的temp的正确位置
                arr[i]=temp;
                quickSort(arr,l,i-1);
                quickSort(arr,i+1,r);
            }
    
        }
        
    }

     

     

  • 相关阅读:
    ArcMAP操作 获取点所在栅格的高程值
    AE代码 积累
    AE 判断点是否在面内
    ArcMAP获取要素的外包多边形
    DEM消除平三角形教程
    博文目录
    Redis哨兵集群部署
    引用-各类数据库整体架构图汇总
    百度数仓Palo-Doris并发压测性能
    引用-Phoenix介绍
  • 原文地址:https://www.cnblogs.com/focusonoutput/p/13767184.html
Copyright © 2020-2023  润新知