冒泡排序:
冒泡排序的主要思想是相邻的两个数进行比较,大的数字放在后面,小的数字放在前面,这样每进行一次交换必然会导致大的数字越来越靠后,一趟排序后会让最大的数字排到最后,接下来是次大的数字,有点像水泡在水中上浮一样越靠近水平面的数字越大。
举个例子:
如:67,12,1,45,4,24,67
第一次排序后:12,1,45,4,24,67,67
第二次排序后:1,12,4,24,45,67,67
第三次排序后:1,4,12,24,45,67,67
。。。(没有发生变化,可以简化流程)
第六次排序后:1,4,12,24,45,67,67
结束
可以看出冒泡排序是稳定的,相同数字的相对位置次序不会发生变化
Java实现冒泡排序
class bubbleSort{
private int[] nums;
public void sort(){
for(int i=0;i<nums.length;i++){
int temp=0;
Boolean isfinish = true;//排序结束标志变量
for(int j=1;j<nums.length-i;j++,temp++){
if(nums[temp]>nums[j]){
change(temp,j);
isfinish = false;
}
}
if(isfinish){
break;
}
}
}
public void change(int i,int j){
int num=0;
num = nums[i];
nums[i] = nums[j];
nums[j] = num;
}
public int[] bubbleSort(int[] nums){
this.nums = nums;
sort();
return nums;
}
public void print(){
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+",");
}
}
}
public class bubble_sort{
public static void main(String[] args){
int[] numbers = {67,12,1,45,4,24};
bubbleSort bs = new bubbleSort();
bs.bubbleSort(numbers);
bs.print();
}
}