> 文档中心 > 十大排序算法(Java版)

十大排序算法(Java版)

十大排序算法

  • 总览
  • 冒泡排序
  • 选择排序
    • 流程图
    • Java代码
    • 复杂度分析
  • 直接插入排序
    • 流程图
    • Java代码
    • 复杂度分析

总览

十大排序算法(Java版)
十大排序算法(Java版)

冒泡排序

流程图

十大排序算法(Java版)

Java代码

    //冒泡排序    public void bubleSort(int arr[]){ int len=arr.length; for(int i=1;i<arr.length;++i){     for(int j=0;j<len-i;++j){  if(arr[j+1]<arr[j]){      int temp=arr[j];      arr[j]=arr[j+1];      arr[j+1]=temp;  }     } }    }

复杂度分析

时间复杂度为O( N 2 N^2 N2),空间复杂度为O( 1 1 1),该排序算法是稳定的

选择排序

流程图

思路:从0索引处开始,依次和后面的元素进行比较 ,小的元素往前放,经过一轮比较后,最小的元素就放在了最小索引处,每经过一轮比较,索引位置 + 1。
十大排序算法(Java版)

Java代码

    //选择排序    public static void selectSort(int[] arr) { int len=arr.length; for(int i=0;i<len-1;++i){     for(int j=i+1;j<len;++j){  if(arr[i]>arr[j]){      int temp=arr[i];      arr[i]=arr[j];      arr[j]=temp;  }     } }    }

复杂度分析

时间复杂度为O( N 2 N^2 N2),空间复杂度为O(1),该排序算法是不稳定的

直接插入排序

流程图

十大排序算法(Java版)

Java代码

    //插入排序    public static void insertSort(int[] arr){ int len=arr.length; for(int i=1;i<len;++i){     for(int j=i;j>0;--j){  if(arr[j]<arr[j-1]){      int temp=arr[j];      arr[j]=arr[j-1];      arr[j-1]=temp;  }     } } return;    }

复杂度分析

时间复杂度为O( N 2 N^2 N2),空间复杂度为O(1),该排序算法是稳定的。

十大排序算法(Java版) 创作打卡挑战赛 十大排序算法(Java版) 赢取流量/现金/CSDN周边激励大奖