排序算法

冒泡排序

时间复杂度

O(n^2)
  • 以数组为例:[]

  • 比较的范围:{0~n-1},n--

  • 比较的对象:相邻两个数

gif演示:

image
image

代码实现

pulic void static main(String[] args){
    int[] arry = {6,3,5,7,0,4,1,2}
    //外层控制比较范围
    //内层控制比较的对象
    for(int i = arry.length-1; i > 0;i--){
        for(int j = 0; j <=i;j++){
            if(arry[i]>arry[i+1]){
                int temp =arry[i];
                arry[i] = arry[i+1];
                arry[i+1] = temp;
            }
        }
    }
}

选择排序

时间复杂度

O(n^2)
  • 以数组为例:[]

  • 比较的范围:{i-n-1},i++

  • 比较的对象:该范围内的最值

 public static void main(String[] args) {
        int[] array = {23,1,4,9,2,45,11};
        //描述:在一定范围内选择最小的放到这个范围的最前面
        for (int i = 0;i < array.length;i++){
            int min = array[i];
            int target = i;
            for (int j =i;j<array.length;j++){
                if(min > array[j]){
                   min = array[j];
                   target = j;
                }
            }
            //交换
            int temp = array[i];
            array[i] = min;
            array[target] = temp;
        }
        //输出测试
        for (int a:array){
            System.out.println(a);
        }
    }

插入排序

时间复杂度

O(n^2)
  • 以数组为例:[]

  • 比较的范围:每个位置和它之前的数比较

  • 比较的对象:该位置和该位置之前的数

代码实现:

 public static void main(String[] args) {
        int[] array = {23,1,4,9,2,45,11};
        //外层控制靶子
        //内层控制比较的范围
        for (int i = 1;i < array.length;i++){
            int target = array[i];
            int targetIndex = i;
            for (int j = i;j>=0;j--){
                if (target < array[j]){
                    //交换
                    int temp = target;
                    array[targetIndex] = array[j];
                    array[j] = temp;
                    targetIndex = j;
                }
            }
        }
      //测试输出
        for (int a:array){
            System.out.println(a);
        }
    }







前面的三种排序算法都是时间复杂度n2的(O(n^2))的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,223评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,391评论 0 1
  • 不止一次记起那个奇怪的噩梦。 好像是刚发过洪水,什么都被淹没,我站在一片汪洋之中。那是一块土坡一样的高地,斜斜地长...
    青璞阅读 446评论 0 0
  • 本章题目是亚当夏娃的一天,顾名思义,讲的便是人类始祖(“亚当”们和“夏娃”们)的生活。科学家们若想研究他们的生活方...
    读者_在路上阅读 460评论 0 0