• 算法-自然合并排序


    问题描述:对于数组a[],先对其中的数字按有无顺序分类
    举例:a[]={11,3,4,5,1,2,9},则可分类:{11},{3,4,5},{1,2,9},然后再两两归并排序。
    代码:

    package suanfa;
    
    //自然合并排序
    public class ziranhebing {
        public static void main(String[] args) {
            int a[] = { 4, 8, 3, 7, 1, 5, 6, 2 };
            int b[] = new int[a.length];
            int k = fennei(a, b);
            for (int i = 0; i <= k; i++)
                System.out.print(b[i] + "  ");
            System.out.println();
            int temp[] = new int[a.length];
            for (int i = 0; i < k; i++) {
                int low = 0;
    
                int middle = b[i];
                int high = b[i + 1];
                guibing(a, temp, low, middle, high);
    
            }
            for (int i1 = 0; i1 < a.length; i1++)
                System.out.print(a[i1] + "  ");
            System.out.println();
    
        }
    
        public void merge() {
    
        }
    
        public static int fennei(int a[], int b[]) {
            int k = 0;
            for (int i = 0; i < a.length - 1; i++) {
                int j = i + 1;
                if (a[i] > a[j]) {
                    b[k] = i;
                    k++;
                }
            }
            b[k] = a.length - 1;
            return k;
    
        }
    
        public static void guibing(int a[], int temp[], int left, int middle,
                int right) {
    
            int i = left;
            int j = middle + 1;
            int k = 0;
            while (i <= middle && j <= right) {
                if (a[i] < a[j])
                    temp[k++] = a[i++];
                else
                    temp[k++] = a[j++];
    
            }
            while (i <= middle) {
                temp[k++] = a[i++];
            }
            while (j <= right) {
                temp[k++] = a[j++];
            }
            for (int i1 = 0; i1 < k; i1++) {
                a[i1 + left] = temp[i1];
            }
        }
    
    }
    
  • 相关阅读:
    Thymeleaf介绍和基本语法使用
    2020版idea及没有default Settings设置的idea,修改默认maven设置、本地仓库的方法
    创建springboot项目的两种方式
    2020版IDEA新建打开*.vue文件
    IDEA新手常用快捷键
    搭建一个maven的web项目
    eclipse、idea引入外部jar包教程
    序列化笔记
    转换流笔记
    缓冲流笔记
  • 原文地址:https://www.cnblogs.com/wangxiaopei/p/8551277.html
Copyright © 2020-2023  润新知