目录
计数排序
插入排序
冒泡排序
选择排序
计数排序
计数原理:将一个数组中数字的出现次数放到另外一个数组中,是典型的牺牲空间换时间
public static int [] countSort(int [] arr){
//1,先求出这个数组中最大,最小值
int min=0;
int max=0;
for(int i=0;i<arr.length;i++){min=arr[0];max=arr[0];
if(arr[i]<min){min=arr[i]
}
if(arr[i]>max){
max=arr[i]
}
}
//2,求出偏移量offset
int offset=min;
//3,求出新建数组长度
int len=max-min+1;
int[] nums=new int[len];
//4,计算每个数出现的次数
for(int i=0;i<arr.length;i++){nums[arr[i]-offset]++;
}
//5,在把新数组中的次数还原到原来的数组中int index=0;for(int i=0;i<nums.length;i++){if(nums[i]!=0){for(int j=0;j<nums[i];j++){arr[index++]=i+offset;
}
}
}return arr;}
插入排序
public static void inserSort(int [] arr){for(int i=1;i<arr.length;i++){int e=arr[i];int j;for(j=i;j>0&&arr[j-1]>arr[j];j--){arr[j]=arr[j-1];}arr[j]=e;}}
冒泡排序
public static void bubbleSort(int [] arr) {for(int i=0;i<arr.length-1;i++) {//少比一轮for(int j=0;j<arr.length-1-i;j++) {if(arr[j]>arr[j+1]) {//比一轮找出一个最大值int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}} }
选择排序
public static void bubbleSort(int [] arr) {for(int i=0;i<arr.length-1;i++) {//少比一轮for(int j=i+1;j<arr.length;j++) {if(arr[i]>arr[j]) {//比一轮找出一个最小值int temp=arr[j];arr[j]=arr[i];arr[i]=temp;}}} }