第一种
通过简单的比较相邻的元素,如果他们的顺序是错误的,则交换它们的位置。
重复这个步骤,直到没有更多要交换的元素为止。
j变量代表未排序数组范围的右边界,j以后的已经排序
public static void bubble(int[] nums,int j){
if(j == 0){
return;
}
for (int i = 0; i < j; i++) {
if(nums[i] > nums[i+1]){
int a = nums[i];
nums[i] = nums[i+1];
nums[i+1]= a;
}
}
bubble(nums,j-1);
}
第二种
这里的x变量其实是一个分界的变量
x的左边未排序 右边则不需要排序
从而提高排序效率
public static void bubble_plus(int[] nums,int j){
if(j == 0){
return;
}
int x = 0;
for (int i = 0; i < j; i++) {
if(nums[i] > nums[i+1]){
int a = nums[i];
nums[i] = nums[i+1];
nums[i+1]= a;
x = i;
}
}
bubble_plus(nums,x);
}
第三种
这种其实是对第一种的补充
x变量代表未排序变量的左边界
x之前以及j之后都已经排序
因此不需要再排序,提高效率
public static void bubble_pro(int[] nums,int j,int x){
if(j >= x){
return;
}
for (int i = 0; i < j; i++) {
if(nums[i] > nums[i+1]){
int a = nums[i];
nums[i] = nums[i+1];
nums[i+1]= a;
}
}
bubble_pro(nums,j-1,x+1);
}
标签:java,变量,nums,int,冒泡排序,三种,排序,bubble,public
From: https://www.cnblogs.com/xiaofengs/p/17993571