当前位置: 代码迷 >> 综合 >> java的计数,选择,冒泡,插入排序
  详细解决方案

java的计数,选择,冒泡,插入排序

热度:95   发布时间:2023-10-31 16:23:56.0

目录

计数排序

插入排序

冒泡排序

选择排序

 


计数排序

计数原理:将一个数组中数字的出现次数放到另外一个数组中,是典型的牺牲空间换时间

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;}}}		   }

 

  相关解决方案