• 冒泡: 从左往右依次比较相邻的两个数,将小数放在前面,大数放在后面。

     public void bobSort(){
           for(int i=0;i<length-1;i++){//排序轮数
               for(int j=0;j<length-1-i;j++){//比较次数
                   if(array[j]>array[j+1]){
                       int temp = array[j+1];
                       array[j+1] = array[j];
                       array[j] = temp;
                  }
              }
          }
      }
  • 选择:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕

    public void chooseSort(){
           for(int i=0; i<length-1; i++){
               int minIndex = i;
               for(int j=minIndex+1;j<length;j++){
                   if(array[j]<array[minIndex]){
                       minIndex = j;
                  }
              }
               int temp = array[i];
               array[i] = array[minIndex];
               array[minIndex] = temp;
          }
      }
  • 插入:将数据分成已排序未排序,从已排序逐渐向未排序扫描,未排序的数据逐个纳入已排序的数据中(有点像摸牌的过程)public static int[] insertSort(int[] arr) {

  •         for (int i = 1; i < arr.length; i++) {
               int j = i;
               int target = arr[i];
               while (j > 0 && target < arr[j - 1]) {
                   arr[j] = arr[j - 1];
                   j--;
              }
               arr[j] = target;
          }

           return arr;
      }

     
  • 快速:有点像递归,选择一个基准数据,将数据分开大的放右边小的放左边,对基准两侧的数据再同样操作直到无法分割

    public static void sort(int[] a,int low,int high){
           int start = low;
           int end = high;
           int key = a[low];


           while(end>start){
               //从后往前比较
               while(end>start&&a[end]>=key)  //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
              {
                   end--;
              }
               if(a[end]<=key){
                   int temp = a[end];
                   a[end] = a[start];
                   a[start] = temp;
              }
               //从前往后比较
               while(end>start&&a[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
              {
                   start++;
              }
               if(a[start]>=key){
                   int temp = a[start];
                   a[start] = a[end];
                   a[end] = temp;
              }
               //此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
          }
           //递归
           if(start>low) {
               sort(a, low, start - 1);//左边序列。第一个索引位置到关键值索引-1
          }
           if(end<high) {
               sort(a, end + 1, high);//右边序列。从关键值索引+1到最后一个
          }
      }

java 基础排序算法的更多相关文章

  1. Java面试宝典系列之基础排序算法

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  2. 6种基础排序算法java源码+图文解析[面试宝典]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...

  3. java 基础排序(冒泡、插入、选择、快速)算法回顾

    java 基础排序(冒泡.插入.选择.快速)算法回顾 冒泡排序 private static void bubbleSort(int[] array) { int temp; for (int i = ...

  4. 十大基础排序算法[java源码+动静双图解析+性能分析]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...

  5. Java基础系列--基础排序算法

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一.概述 基础排序算法包括:桶排序.冒泡排序.选择排序.插入排序等 ...

  6. Java常用排序算法及性能测试集合

    测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...

  7. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  8. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  9. php四种基础排序算法的运行时间比较

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

随机推荐

  1. java语言基础--方法的执行图解

    1.调用m1方法(压栈) 2.m1调用m2方法(压栈) 3.m2调用m3方法(压栈) 4.运行m3(弹栈) 5.运行m2(弹栈) 6.运行m1(弹栈)

  2. vue项目localhost可以访问 ip不能访问

    解决方法: 如图所示:

  3. webbug3.0靶场第一关

    目标一,由于用的kli系统,所以没有去手动注入,用了sqlmap来注入检测 先用sqlmap -u "http://192.168.199.136/pentest/test/sqli/sql ...

  4. Node.Js http服务(websocket)

    安装node,下载地址 https://nodejs.org/en/ cmd 中 输入 node -v 安装成功可以查看版本 cmd 中 ctrl - c 可以 结束 和 启动 编辑 js 文本 va ...

  5. ie8的input的placeholder不显示的解决bug

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. Python练习九

    1.处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕. def check_file(filename, content): with open(filename, e ...

  7. js比较洋气的写法

    案例一:使用js的构造方法生成js对象.给该对象赋属性值或function 案例二:使用json的代码风格,完成同样的功能. <!DOCTYPE html> <html> &l ...

  8. Exp6 信息搜集与漏洞扫描

     Exp6 信息搜集与漏洞扫描 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现. ...

  9. libvirt启动报错Failed to start Virtualization daemon

    libvirt启动报错Failed to start Virtualization daemon 1.启动libvirt的具体报错如下 [root@localhost IOS]# service li ...

  10. docker配置phpadmin需要注意的地方

    因为web服务是在容器内跑的,ip地址注意,如果没有特殊配置,应该使用172.