• 算法排序代码(高级排序)


    1、快速排序

    public class FastSort {
    
        /**
         * 交换
         * @param arr
         * @param a
         * @param b
         */
        public static void swap(int[] arr, int a, int b) {
            int temp = arr[a];
            arr[a] = arr[b];
            arr[b] = temp;
        }
    
        /**
         * 快速排序
         *
         * @param arr: 数组
         */
        public static void Fastsort(int arr[], int left, int right) {
            if (left > right) {
                return;
            } else {
                int i = left;
                int j = right;
                int temp;
                int point = arr[left];
                while (i < j) {
                    while (arr[j] >= point && i < j) {
                        j--;
                    }
                    while (arr[i] <= point && i < j) {
                        i++;
                    }
                    swap(arr, i, j);
                }
                arr[left] = arr[i];
                arr[i] = point;
                Fastsort(arr, left, i - 1);
                Fastsort(arr, i + 1, right);
            }
    
        }
    
        /**
         * 打印输出
         * @param arr
         */
        public static void print(int arr[]) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
        }
    
        public static void main(String[] args) {
            int arr[] = {1, 4, 7, 0, 5, 4, 9, 7, 0, 4, 11};
            Fastsort(arr, 0, arr.length - 1);
            print(arr);
        }
    }
    View Code

    2、堆排序

    public class HeapSort {
        public static void swap(int[] arr, int a, int b) {
            int temp = arr[a];
            arr[a] = arr[b];
            arr[b] = temp;
        }
    
        public static void CreatHeap(int arr[], int i, int length) {
            for (i = length / 2 - 1; i >= 0; i--) {
                int temp = arr[i];
                for (int j = 2 * i + 1; j < length; j = j * 2 + 1) {
                    if (j + 1 < length && arr[j] < arr[j + 1]) {
                        j++;
                    }
                    if (temp < arr[j]) {
                        arr[i] = arr[j];
                        i = j;
                    }else {
                        break;
                    }
                }
                arr[i] = temp;
            }
        }
    
        public static void SortHeap(int[] arr) {
            for (int i = arr.length-1; i >0 ; i--) {
                swap(arr,0,i);
                CreatHeap(arr,0,i);
            }
        }
    
        public static void main(String[] args) {
            int arr[] = {1, 5, 6, 7, 8, 4, 9, 1, 0, 5};
            //初次弄成初始堆
            CreatHeap(arr, 0,arr.length);
    
            //进行最大
            SortHeap(arr);
    
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
        }
    }
    View Code

    3、希尔排序

    public class SheelSort {
        public static void swap(int[] arr, int a, int b) {
            int temp = arr[a];
            arr[a] = arr[b];
            arr[b] = temp;
        }
    
        public static void sheel_sort(int arr[]) {
            for (int i = arr.length/5; i >=1 ; i = i/2) {
                for (int j = i; j < arr.length; j++) {
                    for (int k = j; k >= i; k-=i) {
                        if (arr[k-i]>arr[k])
                        {
                            swap(arr,k-i,k);
                        }
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            int arr[] = {1, 5, 6, 7, 8, 4, 9, 1, 0, 5};
            sheel_sort(arr);
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
        }
    }
    View Code
  • 相关阅读:
    Java Stax操作XML简介
    使用JAXB来实现Java合xml之间的转换
    WebService学习笔记系列(四)
    JavaWeb学习笔记总结 目录篇
    成为谷歌的java程序员首先要做到这五点!
    Java实现快速排序
    二叉树遍历(Java实现)
    Java单链表反转
    学好java,做好工程师必读的15本书
    最全前端资源汇集
  • 原文地址:https://www.cnblogs.com/karrya/p/10850567.html
Copyright © 2020-2023  润新知