• 技术文章 >头条

    排序算法详解

    小云云小云云2017-12-04 10:58:55原创1351
    所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。

    Simple Insertion Sort 插入排序

    /**
     * 将位置p上的元素向左移动,直到它在前p+1个元素中的正确位置被找到的地方
     * @param a an array of Comparable items
     */public static <AnyType extends Comparable<? super AnyType>> void insertionSort(AnyType[] a) {
        int j;    for (int p = 1; p < a.length; p++) {
            AnyType tmp = a[p];
            for (j = p; j > 0 && tmp.compareTo(a[j-1]) < 0; j--) {
                a[j] = a[j-1];        }
            a[j] = tmp;
        }
        System.out.println(Arrays.toString(a));}

    Shell Sort 希尔排序

    /**
     * @param a an array of Comparable items
     */public static <AnyType extends Comparable<? super AnyType>> void shellSort(AnyType[] a) {    int j;    for (int gap = a.length / 2; gap > 0; gap /= 2) {        for (int i = gap; i < a.length; i++) {
                AnyType tmp = a[i];            for (j = i; j >= gap && tmp.compareTo(a[j - gap]) < 0; j -= gap) {
                    a[j] = a[j - gap];
                }
                a[j] = tmp;
            }
        }
        System.out.println(Arrays.toString(a));
    }

    Binary Sort 二分排序

    /**
     * @param a an array of Comparable items
     */public static <AnyType extends Comparable<? super AnyType>> void binarySort(AnyType[] a) {
        Integer i,j;
        Integer low,high,mid;
        AnyType temp;    for(i=1;i<a.length;i++){
            temp=a[i];
            low=0;
            high=i-1;        while(low<=high){
            mid=(low+high)/2;        if(temp.compareTo(a[mid]) < 0) {
                high=mid-1;
            } else {
                low=mid+1;
            }
            }        for(j=i-1;j>high;j--)
            a[j+1]=a[j];
            a[high+1]=temp;
        }
        System.out.println(Arrays.toString(a));
    }

    Bubble Sort 冒泡排序

    /**
     * @param a an array of Comparable items
     */public static <AnyType extends Comparable<? super AnyType>> void bubbleSort(AnyType[] a) {
        Integer i,j;
        AnyType temp;  
        for(i=1;i<a.length;i++) {  
            for(j=0;j<a.length-i;j++) {       //循环找到下沉"气泡",每下沉一位,下次比较长度较小一位   
                if(a[j].compareTo(a[j+1]) > 0) {
                    temp=a[j];  
                    a[j]=a[j+1];  
                    a[j+1]=temp;      //将"气泡"下沉到当前比较的最后一位   
                }  
            }  
        }  
        System.out.println(Arrays.toString(a));
    }

    Selection Sort 选择排序

    /**
    * @param a an array of Comparable items
    */public static <AnyType extends Comparable<? super AnyType>> void selectSort(AnyType[] a) {
       Integer i,j,min;
       AnyType temp;  
       for(i=0;i<a.length-1;i++) {  
           temp=a[i];            
           min=i;                   //将当前位置元素当作最小值元素(其实是要将最小值元素交换到当前)   
           for(j=i+1;j<a.length;j++) {  
               if(temp.compareTo(a[j]) > 0) { //用a[i]和后面所有元素逐个比较,找到最小指的下标并记录  
                   temp=a[j];      //下一位小于前一位,则将下一位赋值给temp并继续往右移动比较   
                   min=j;           //最小值的下标,赋值给min   
               }  
           }  
           a[min] = a[i];           //将最小值元素的和当前元素交换,使得当前元素为其后面所有元素中最小值     
           a[i] = temp;  
       }
       System.out.println(Arrays.toString(a));

    以上内容就是几种排序算法的教程,希望能帮助到大家。

    相关推荐:

    JavaScript基本常用排序算法的实例解析

    PHP堆排序算法实例详解

    php几种排序算法实例详解

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:详解 算法 排序
    上一篇:几款适合web程序员的响应式框架 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 【整理推荐】值得收藏的8个实用PHP库• 三年面试经验分享:前端面试的四个阶段和三个决定因素• 【整理分享】7个有趣又实用的开源GitHub项目• 建议收藏!一个完整的软件研发流程• 使用ChatGPT干掉遍地垃圾的互联网内容!
    1/1

    PHP中文网