请补全冒泡排序算法,并将数组{34, 12, 42, 23, 33, 236}排序后输出
冒泡排序的思想
每次从数组中找出最大值放在数组的后面去。
实现冒泡排序的关键步骤分析
确定总共需要做几轮: 数组的长度-1.
每轮比较几次:
当前位置大于后一个位置则交换数据
代码如下:
public static void sortM(int [] arr){
int count=0;
int temp;//临时变量
boolean flag;//是否交换的标志
for(int i=0; i<arr.length-1; i++){
//表示趟数,一共 arr.length-1 次
// 每次遍历标志位都要先置为false,才能判断后面的元素是否发生了交换
flag = false;
for(int j=arr.length-1; j>i; j--){ //选出该趟排序的最大值往后移动
if(arr[j] < arr[j-1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
flag = true;
}
}
}
}
public class BubbleSort {
public static void main(String[] args) {
//对34,5,22,-98,6,-76,0,-3这一组数从小到大排序
int arr[] = new int[]{34, 5, 22, -98, 6, -76, 0, -3};
//外层循环控制排序的次数
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;
}
}
}
//循环遍历输出数组中的每一个元素
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}