冒泡排序
冒泡排序法是最基本的排序法之一,冒泡排序法的运行机制是通过循环遍历元素,并调整相邻元素顺序的一种简单排序方法。
冒泡排序法的运行情况如下(以将数组 {21, 99, 3, 1024, 16} 排列为升序为例):
1)冒泡排序法的第一次遍历目的是将数值最大的元素移动到数组的尾部。首先,将元素21与元素99进行比较,由于21 < 99,所以不用交换元素;其次,将元素99与元素3进行比较,由于99 > 3,所以需要交换元素(即99和3的位置互换,数组的序列被调整为 {21, 3, 99, 1024, 16});再次,将元素99与元素1024进行比较,由于99 < 1024,所以也不用交换元素;最后,将元素1024与元素16进行比较,由于1024 < 16,所以需要交换元素(即1024与16的位置互换)。经过第一次遍历将最大的元素1024调整到了数组的尾部,数组序列变为 {21, 3, 99, 16, 1024}。
(2)冒泡排序法的第二次遍历与第一次原理一致,只不过第二次遍历不再关系数组的尾部,因为经过第一次遍历后,数组的尾部已经存储了数组中数值最大的元素,所以第二次遍历的目的是将数组中数值第二大的元素,存储到数组的倒数第二个位置(即此时只关心数组前四个元素 {21, 3, 99, 16}的顺序)。首先,将元素21与元素3进行比较,由于21 > 3,所以需要交换元素(即21和3位置互换,数组的前四位序列被调整为 {3, 21, 99, 16});其次,将元素21与元素99进行比较,由于21 < 99,所以不用交换元素;最后,将元素99与元素16进行比较,由于99 > 16,所以需要交换元素(即99和16的位置互换)。经过第二次遍历数组序列变为 {3, 21, 16, 99, 1024}。
(3)依此类推,第三次遍历将数组中数值第三大的元素存储到数组的倒数第三个位置,第四次遍历将数组中数值第四大的元素存储到数组的倒数第四个位置,由于数组一共包含五个元素,则排序完成。
第一次遍历:
public class bijiao{ //第一轮的冒泡循环
public static void main(String[] args) {
int []numberArray={21, 99, 3, 1024, 16};
for(int i=0;i<numberArray.length-1;i++){ //每循环一次遍历相邻两个元素的值
int temp=0;
if(numberArray[i]>numberArray[i+1]){
temp=numberArray[i];
numberArray[i]=numberArray[i+1];
numberArray[i+1]=temp; }
}
for(int i=0;i<numberArray.length;i++){
System.out.println(numberArray[i]); }
}
}
冒泡排序1:
该for循环每循环一次就会将较大的数据放在适当的位置,比如loopTime=1;则将最大数据放在最后;loopTime=2;则将第二大数据放在倒数第二个元素位置;
public class mpao1 {
public static void main(String[] args) {
int []array={21, 99, 3, 1024, 16};
for(int looptime=1;looptime<array.length;looptime++){
for(int i=0;i<array.length-looptime;i++){ //该for循环每循环一次就会将较大的数据放在适当的位 // 置,比如loopTime=1;则将最大数据放在最后;loopTime=2;则将第二大数据放在倒数第二个元素位置;
int current=array[i];
int next =array[i+1];
if(number>next){ //如果前面的元素大于后面的,则需要调换
array[i]=next;
array[i+1]=current;
}
}
}
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
}
冒泡排序2:
public class maopao2 {
public static void main(String[] args) {
int []array={21,99,3,1024,16};
for(int i=array.length;i>0;i--){
for(int j=0;j<i-1;j++){
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(int j=0;j<array.length;j++){
System.out.println(array[j]);
}
}
}