Java初学——数组排序之冒泡排序

冒泡排序

Java初学——数组排序之冒泡排序_第1张图片
代码如下:

public static void main(String[] args) {
     
		int[] arr=new int[] {
     49,38,65,97,76,13,27,49}; //arr.length=8 
		//冒泡排序:从小到大
		for(int i=0;i<arr.length-1;i++) {
      //8个元素只需排列7趟:0~6
			/*
			 * 内层循环控制每趟比较次数
			 * 第一趟从arr[0]比到arr[7],8个数字比7次,找到最大的元素,置与arr[7]
			 * 第二趟从arr[0]比到arr[6],7个数字比6次,找到次大的元素,置与arr[6]
			 * 以此类推
			 */
			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]+"\t");
		}
	}

第一趟比较过程如下:

(第一次:有交换)
Java初学——数组排序之冒泡排序_第2张图片Java初学——数组排序之冒泡排序_第3张图片(第二次)
Java初学——数组排序之冒泡排序_第4张图片(第三次)
Java初学——数组排序之冒泡排序_第5张图片(第四次:有交换)
Java初学——数组排序之冒泡排序_第6张图片Java初学——数组排序之冒泡排序_第7张图片(第五次:有交换)
Java初学——数组排序之冒泡排序_第8张图片Java初学——数组排序之冒泡排序_第9张图片(第六次:有交换)
Java初学——数组排序之冒泡排序_第10张图片Java初学——数组排序之冒泡排序_第11张图片(第七次:有交换)
Java初学——数组排序之冒泡排序_第12张图片Java初学——数组排序之冒泡排序_第13张图片到此第一趟排序结束,找到了8个元素中的最大值并置于arr[7],此后无需比较arr[7],第二趟只需比较剩下7个元素找到次大值……以此类推

你可能感兴趣的:(排序算法,java,数据结构)