十大排序算法(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代码
//选择排序 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代码
//插入排序 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),该排序算法是稳定的。
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖