zoukankan      html  css  js  c++  java
  • 算法排序代码(高级排序)

    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
  • 相关阅读:
    我大学时代的好朋友要结婚了!
    (function(root,factory){})(this,function($){}) 一个立即执行的匿名函数自调
    非书面的非官方的常见的HTTP请求状态码分析
    一个页面多个HTTP请求 页面卡顿!
    requestAnimationFrame Web中写动画的另一种选择
    js 点击 返回顶部 动画
    css3动画 一行字鼠标触发 hover 从左到右颜色渐变
    var 和 let 的异同?
    H5案例分享:使用JS判断客户端、浏览器、操作系统类型
    基于浏览器的HTML5地理定位
  • 原文地址:https://www.cnblogs.com/karrya/p/10850567.html
Copyright © 2011-2022 走看看