首页 > PHP头条 > 正文

排序算法详解

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

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几种排序算法实例详解

  • 相关标签:详解 算法 排序
  • 本文原创发布php中文网 ,转载请注明出处,感谢您的尊重!
  • 相关文章


  • 少走弯路,一个老程序猿谈PHP职业发展规划
  • 圣诞快乐!来自PHP中文网的真诚问候!
  • PHP“钱景”如何?看看内行怎么说?
  • 元旦福利大放送!破解百度云下载,10MB/S不是梦!
  • 网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
    独孤九贱(4)_PHP视频教程

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(5)_ThinkPHP5视频教程

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(1)_HTML5视频教程

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    相关视频教程

  • javascript初级视频教程 javascript初级视频教程
  • jquery 基础视频教程 jquery 基础视频教程
  • javascript三级联动视频教程 javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程 独孤九贱(6)_jQuery视频教程
  • 相关视频章节