冒泡、选择、插入排序的简单记录
冒泡排序:
动图展示
![]()
/** * 时间复杂度(n-1)(n-(i+1))=n^2-in+i+1 * 空间复杂度 O(1)原地排序 * @param nums * @return */ public static int[] bubbleSort(int[] nums){ int i = 0; int j; int tmp; for(;i < nums.length;i++){ boolean isSorted = true; j = 0; for(;j < nums.length-i-1;j++){ if(nums[j] > nums[j+1]){//稳定,原地排序 isSorted = false; tmp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = tmp; } } if(j == nums.length-i-1 && isSorted){ break; } } return nums; }
选择排序:
动图展示
![]()
/** * 时间复杂度(n-1)(n-2)=n^2-3n+2 * 空间复杂度 O(1)原地排序 * @param nums * @return */ public static int[] selectSort(int[] nums){
int index = -1; int i = 0; int j; int tmp; for(;i<nums.length;i++){
index = i; j = i+1; for(;j<nums.length;j++){ if(nums[index] > nums[j]){//不稳定,原地排序 index = j; } }
if(index != i){
tmp = nums[i]
nums[i] = nums[index];
nums[index] = tmp;
} } return nums; } 插入排序:
动图展示
![]()
/**
* 时间复杂度(n-1)(n-1)/2
* 空间复杂度 O(1)原地排序
* @param nums
* @return
*/
public static int[] insertSort(int[] nums){
int i = 1;
int j;
int tmp = 0; for(;i<nums.length;i++){
tmp = nums[i]; for(j = i-1;j>=0;--j){ if(nums[j] > tmp){
nums[j+1] = nums[j];
if(j == 0){
nums[j] = tmp;
break;
} }else{
nums[j+1] = tmp;
break;
} } } return nums; }
created by sean-chang.