Java修炼——冒泡排序

核心思想:
1)如有一个数列有 N(5)个元素,则至多需要 N-1(4)趟循环 才能保证数列有序
2) 每一趟循环都从数列的第一个元素开始比较,依次比较 相邻的两个元素,比较到数列的最后
3) 如果前一个元素大于后一个元素,则使用第三变量交换

在这里插入图片描述
基础算法的缺点:
1) 每一趟比较都要比较到数组的最后,没有必要,只要比较
到无序数列即可

for(int j=0;i<数组名.length-1;j++){
i.  …..
}
i j<?
0 j<4
1 j<3
2 j<2
3 j<1
j<N-1-i;

2) 不管是否有序,都要进行 N-1 趟循环

如何判断有序?比较了一趟,没有发生交换,就是有序
定义一个 boolean 类型的变量 flag,默认有序 true;发生交
换,置为 false,一趟循环结束后,根据 flag 的值判断是否有序,有序,则退出循环

3) int temp 每次比较的时候都要给 temp 分配空间,比较完
毕后翻放空间所有的比较都使用一个 temp 变量,同一个空间,将 temp 变量提取到大循环外

完善后的代码:

int [] array1= {4,5,2,7,14,1,6};
		int temp;
		boolean flag;
		int count=0;
		System.out.println("排序前:"+Arrays.toString(array1));
//		System.out.println(Arrays.binarySearch(array1, 7));
		for (int i = 0; i <array1.length-1; i++) {
			flag=true;
			count++;
			for (int j = 0; j <array1.length-1-i; j++) {
				if (array1[j] > array1[j+1]) {
					temp=array1[j];
					array1[j]=array1[j+1];
					array1[j+1]=temp;
					flag=false;
				}
			}
			if (flag) {
				break;
			}
			
		}
		System.out.println("排序之后:"+Arrays.toString(array1));
		System.out.println("循环了"+count+"次");

运行结果:
在这里插入图片描述
再次完善冒泡排序,这次使用键盘输入!

package com.bjsxt.Array;

import java.util.Arrays;
import java.util.Scanner;

public class TestPaiXu {
	public static void main(String[] args) {

		System.out.println("请输入一串整数,用逗号分开!");
		Scanner input=new Scanner(System.in);
		String str=input.next().toString();
		String [] arr=str.split(",");
		int temp;
		boolean flag;
		int count=0;
		int [] array1 =new int[arr.length];
		for (int i = 0; i < array1.length; i++) {
			array1[i]=Integer.parseInt(arr[i]);
		}
		System.out.println("排序前:"+Arrays.toString(array1));
		for (int i = 0; i <array1.length-1; i++) {
			flag=true;
			count++;
			for (int j = 0; j <array1.length-1-i; j++) {
				if (array1[j] > array1[j+1]) {
					temp=array1[j];
					array1[j]=array1[j+1];
					array1[j+1]=temp;
					flag=false;
				}
			}
			if (flag) {
				break;
			}
		}
		input.close();
		System.out.println("排序之后:"+Arrays.toString(array1));
		System.out.println("循环了"+count+"次");
	}
}

在这里插入图片描述

posted @ 2019-12-11 08:57  sakura-yxf  阅读(107)  评论(0)    收藏  举报